Mercurial > hg > audio-features-catalogue
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