Mercurial > hg > audio-features-catalogue
comparison rdfpy/af-ontology-defs.py @ 18:d5012016bf64 tip
added rdfpy and rdfonto directories
author | nothing@tehis.net |
---|---|
date | Tue, 23 Apr 2013 11:49:20 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
17:2b5c292ad12f | 18:d5012016bf64 |
---|---|
1 import rdflib | |
2 from rdflib import Graph, RDF, RDFS, plugin, URIRef, Literal, OWL, Namespace | |
3 from InfixOwl.InfixOwl import * | |
4 from datetime import datetime | |
5 | |
6 def writeHeader(graph, title, version, description): | |
7 ontoid = URIRef('') | |
8 graph.add(( | |
9 ontoid, | |
10 RDF.type, | |
11 OWL.Ontology | |
12 )) | |
13 graph.add(( | |
14 ontoid, | |
15 dc['title'], | |
16 Literal(title, lang="en") | |
17 )) | |
18 graph.add(( | |
19 URIRef(''), | |
20 OWL.versionInfo, | |
21 Literal("Version "+version) | |
22 )) | |
23 graph.add(( | |
24 ontoid, | |
25 RDFS.label, | |
26 Literal(title, lang="en") | |
27 )) | |
28 graph.add(( | |
29 URIRef(''), | |
30 dc['description'], | |
31 Literal(description, lang="en") | |
32 )) | |
33 graph.add(( | |
34 URIRef(''), | |
35 dc['date'], | |
36 Literal(datetime.isoformat(datetime.now())) | |
37 )) | |
38 | |
39 def addTerm(graph, label): | |
40 termid = URIRef(af+label.replace(" ", "")) | |
41 graph.add(( termid, RDF.type, OWL.Class )) | |
42 graph.add(( termid, RDFS.label, Literal(label, lang="en") )) | |
43 return termid | |
44 | |
45 def addOriginalOntology(graph): | |
46 orig = Namespace('http://purl.org/ontology/af/') | |
47 origOnto = Graph() | |
48 #origOnto.parse(orig) | |
49 origOnto.parse('/Users/alo/MusicOntology/audiofeaturesonto/rdf/audio_features.rdf') | |
50 | |
51 importTerms = ["Signal", "signal_feature", "value", "dimensions", "Segment", "Point", "feature"] | |
52 | |
53 for item in importTerms: | |
54 sub = URIRef(orig+item) | |
55 oid = URIRef(af+item) | |
56 for pre, obj in origOnto.predicate_objects(sub): | |
57 if pre == RDFS.subClassOf and type(obj) == BNode: | |
58 onProp = origOnto.value(obj,OWL.onProperty,None) | |
59 values = origOnto.value(obj,OWL.someValuesFrom,None) | |
60 Restriction(onProp,ontograph,someValuesFrom=values,identifier=obj) | |
61 ontograph.add(( oid, pre, obj )) | |
62 else: | |
63 if obj.find(orig) > -1: | |
64 val = URIRef(obj.replace(orig,af)) | |
65 else: | |
66 val = obj | |
67 graph.add(( oid, pre, val )) | |
68 | |
69 def addBaseTriples(graph, pypath, rdfpath): | |
70 execfile(pypath) | |
71 | |
72 base = Graph() | |
73 base.parse(rdfpath) | |
74 | |
75 for sub, obj in base.subject_objects(RDF.type): | |
76 if obj == OWL.Class or obj == RDF.Property: | |
77 bid = URIRef(af+sub.split("/")[-1]) | |
78 for pre, item in base.predicate_objects(sub): | |
79 if item.find(afcns) > -1: | |
80 addobj = URIRef(item.replace(afcns,af)) | |
81 else: | |
82 addobj = item | |
83 | |
84 ontograph.add((bid, pre, addobj)) | |
85 | |
86 graph.add((bid, vs['term_status'], Literal("testing", lang="en"))) | |
87 graph.add((bid, RDFS.comment, Literal("Audio feature taxonomy term (Mitrovic et al)") )) | |
88 | |
89 | |
90 def addTriples(graph, pypath, rdfpath, tool): | |
91 execfile(pypath) | |
92 | |
93 source = Graph() | |
94 source.parse(rdfpath) | |
95 | |
96 for sub, obj in source.subject_objects(RDF.type): | |
97 if obj != URIRef(afcns+"AudioFeature") and obj != OWL.Ontology: | |
98 bid = URIRef(af+sub.split("/")[-1]) | |
99 for pre, item in source.predicate_objects(sub): | |
100 if item.find(afcns) > -1: | |
101 addobj = URIRef(item.replace(afcns,af)) | |
102 else: | |
103 addobj = item | |
104 | |
105 graph.add((bid, pre, addobj)) | |
106 | |
107 graph.add((bid, vs['term_status'], Literal("testing", lang="en"))) | |
108 graph.add((bid, RDFS.comment, Literal(tool + " ontology term") )) | |
109 | |
110 def serialize(graph, path, name): | |
111 graph.serialize(path + name + '.rdf') | |
112 graph.serialize(path + name + '.n3', format="n3") | |
113 | |
114 |