diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rdfpy/af-ontology-defs.py	Tue Apr 23 11:49:20 2013 +0100
@@ -0,0 +1,114 @@
+import rdflib
+from rdflib import Graph, RDF, RDFS, plugin, URIRef, Literal, OWL, Namespace
+from InfixOwl.InfixOwl import *
+from datetime import datetime
+
+def writeHeader(graph, title, version, description):
+    ontoid = URIRef('')
+    graph.add((
+        ontoid,
+        RDF.type,
+        OWL.Ontology
+    ))
+    graph.add((
+        ontoid,
+        dc['title'],
+        Literal(title, lang="en")
+    ))
+    graph.add((
+        URIRef(''),
+        OWL.versionInfo,
+        Literal("Version "+version)
+    ))
+    graph.add((
+        ontoid,
+        RDFS.label,
+        Literal(title, lang="en")
+    ))
+    graph.add((
+        URIRef(''),
+        dc['description'],
+        Literal(description, lang="en")
+    ))
+    graph.add((
+        URIRef(''),
+        dc['date'],
+        Literal(datetime.isoformat(datetime.now()))
+    ))
+
+def addTerm(graph, label):
+    termid = URIRef(af+label.replace(" ", ""))
+    graph.add(( termid, RDF.type, OWL.Class ))
+    graph.add(( termid, RDFS.label, Literal(label, lang="en") ))
+    return termid
+
+def addOriginalOntology(graph):
+    orig = Namespace('http://purl.org/ontology/af/')
+    origOnto = Graph()
+    #origOnto.parse(orig)
+    origOnto.parse('/Users/alo/MusicOntology/audiofeaturesonto/rdf/audio_features.rdf')
+
+    importTerms = ["Signal", "signal_feature", "value", "dimensions", "Segment", "Point", "feature"]
+
+    for item in importTerms:    
+        sub = URIRef(orig+item)
+        oid = URIRef(af+item)
+        for pre, obj in origOnto.predicate_objects(sub):
+            if pre == RDFS.subClassOf and type(obj) == BNode:
+                onProp = origOnto.value(obj,OWL.onProperty,None)
+                values = origOnto.value(obj,OWL.someValuesFrom,None)
+                Restriction(onProp,ontograph,someValuesFrom=values,identifier=obj)
+                ontograph.add(( oid, pre, obj ))
+            else:
+                if obj.find(orig) > -1:
+                    val = URIRef(obj.replace(orig,af))
+                else:
+                    val = obj
+                graph.add(( oid, pre, val ))
+                
+def addBaseTriples(graph, pypath, rdfpath):
+    execfile(pypath)
+
+    base = Graph()
+    base.parse(rdfpath)
+
+    for sub, obj in base.subject_objects(RDF.type):
+        if obj == OWL.Class or obj == RDF.Property:
+            bid = URIRef(af+sub.split("/")[-1])
+            for pre, item in base.predicate_objects(sub):
+                if item.find(afcns) > -1:
+                    addobj = URIRef(item.replace(afcns,af))
+                else:
+                    addobj = item
+
+                ontograph.add((bid, pre, addobj))
+        
+            graph.add((bid, vs['term_status'], Literal("testing", lang="en")))
+            graph.add((bid, RDFS.comment, Literal("Audio feature taxonomy term (Mitrovic et al)") ))
+
+
+def addTriples(graph, pypath, rdfpath, tool):
+    execfile(pypath)
+
+    source = Graph()
+    source.parse(rdfpath)
+
+    for sub, obj in source.subject_objects(RDF.type):
+        if obj != URIRef(afcns+"AudioFeature") and obj != OWL.Ontology:
+            bid = URIRef(af+sub.split("/")[-1])
+            for pre, item in source.predicate_objects(sub):
+                if item.find(afcns) > -1:
+                    addobj = URIRef(item.replace(afcns,af))
+                else:
+                    addobj = item
+
+                graph.add((bid, pre, addobj))
+
+            graph.add((bid, vs['term_status'], Literal("testing", lang="en")))
+            graph.add((bid, RDFS.comment, Literal(tool + " ontology term") ))
+
+def serialize(graph, path, name):
+    graph.serialize(path + name + '.rdf')
+    graph.serialize(path + name + '.n3', format="n3")
+    
+    
\ No newline at end of file