Mercurial > hg > audio-features-catalogue
view 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 source
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")