diff rdfpy/af-mirtoolbox.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-mirtoolbox.py	Tue Apr 23 11:49:20 2013 +0100
@@ -0,0 +1,158 @@
+import rdflib, os
+from rdflib import Graph, RDF, RDFS, plugin, URIRef, Literal, OWL, Namespace
+
+basedir = '/Users/alo/MusicOntology/features/'
+
+orig = 'http://sovarr.c4dm.eecs.qmul.ac.uk/features/'
+
+local = Namespace('http://sovarr.c4dm.eecs.qmul.ac.uk/af/mir/MIRToolbox/1.0#')
+
+af = Namespace('http://sovarr.c4dm.eecs.qmul.ac.uk/af/ontology/1.0#')
+
+afv = Namespace('http://sovarr.c4dm.eecs.qmul.ac.uk/af/vocabulary/1.0#')
+
+DC = Namespace("http://purl.org/dc/elements/1.1/")
+
+vs = Namespace('http://www.w3.org/2003/06/sw-vocab-status/ns#')
+
+afskos = Namespace(url + '/vocabulary/skos/1.0#')
+
+skos = Namespace('http://www.w3.org/2004/02/skos/core#')
+
+graph = Graph()
+graph.bind('af', af)
+graph.bind('afv', afv)
+graph.bind('mirtoolbox', local)
+graph.bind('dc', DC)
+graph.bind('owl', OWL)
+graph.bind('vs', vs)
+graph.bind('skos', skos)
+graph.bind('afsv', afskos)
+
+graph.add((
+    URIRef(''),
+    RDF.type,
+    OWL.Ontology
+))
+
+graph.add((
+    URIRef(''),
+    DC['title'],
+    Literal("MIR Toolbox Ontology", lang="en")
+))
+
+graph.add((
+    URIRef(''),
+    OWL.versionInfo,
+    Literal("Version 1.0", lang="en")
+))
+
+graph.add((
+    URIRef(''),
+    DC['description'],
+    Literal("This is an ontology for annotating MIR Toolbox audio features", lang="en")
+))
+
+graph.add(( vs['term_status'], RDF.type, OWL.AnnotationProperty ))
+
+source = Graph()
+source.parse(basedir+'rdfonto/MIRToolbox.rdf')
+
+'''
+graph.add((
+    URIRef(local+'Operator'),
+    RDF.type,
+    OWL.Class
+))
+graph.add((
+    URIRef(local+'FeatureExtractor'),
+    RDF.type,
+    OWL.Class
+))
+graph.add((
+    URIRef(local+'HighLevelFeature'),
+    RDF.type,
+    OWL.Class
+))
+
+for name in ['Structure', 'Statistics', 'Predictions', 'Similarity']:
+    idref = URIRef(local+name)
+    graph.add((
+        idref,
+        RDF.type,
+        OWL.Class
+    ))
+    graph.add((
+        idref,
+        RDFS.subClassOf,
+        URIRef(local+'HighLevelFeature')
+    ))
+    
+
+for name in ['Dynamics', 'Rhythm', 'Timbre', 'Pitch', 'Tonality']:
+    idref = URIRef(local+name+'FeatureExtractor')
+    graph.add((
+        idref,
+        RDF.type,
+        OWL.Class
+    ))
+    graph.add((
+        idref,
+        RDFS.subClassOf,
+        URIRef(local+'FeatureExtractor')
+    ))
+'''
+for su in source.subjects(RDF.type, RDFS.Resource):
+    name = su.split('/')[-1]
+    idref = URIRef(local + name)
+    graph.add((
+        idref,
+        RDF.type,
+        OWL.Class
+    ))
+
+    graph.add((
+        idref,
+        OWL.sameAs,
+        afv[su.split('/')[-1]]
+    ))
+
+    graph.add((idref, vs['term_status'], Literal("testing", lang="en") ))
+
+    graph.add(( idref, RDFS.label, Literal(name, lang="en") ))
+
+    graph.add(( idref, RDFS.comment, Literal( name + " MIR Toolbox audio feature") ))
+    
+    count=sum(1 for _ in source.objects(su, URIRef(orig+'tag')))
+    
+    if count == 1:
+        for it in source.objects(su, URIRef(orig+'tag')):
+            graph.add((
+                idref,
+                RDFS.subClassOf,
+                af[it+'FeatureExtractor']
+            ))
+    
+    count = sum(1 for _ in source.objects(su, URIRef(orig+'group')))
+
+    if count == 1:
+        for it in source.objects(su, URIRef(orig+'group')):
+            graph.add((
+                idref,
+                RDFS.subClassOf,
+                af[it]
+            ))
+
+    count=sum(1 for _ in source.objects(su, URIRef(orig+'type')))
+    
+    if count == 1:
+        for it in source.objects(su, URIRef(orig+'type')):
+            if it == "Operator":
+                graph.add((
+                    idref,
+                    RDFS.subClassOf,
+                    af[it]
+                ))
+
+graph.serialize(basedir + 'rdfonto/af-mirtoolbox.rdf')
+graph.serialize(basedir + 'rdfonto/af-mirtoolbox.n3', format='n3')
\ No newline at end of file