Mercurial > hg > audio-features-catalogue
view rdfpy/writeTimbreToolboxOnto.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, os, fnmatch, urllib2 from rdflib import Graph, RDF, RDFS, plugin, URIRef, Literal, OWL, XSD, Namespace graph = Graph() af = Namespace('http://sovarr.c4dm.eecs.qmul.ac.uk/features/') graph.bind('af', af) dc = Namespace('http://purl.org/dc/elements/1.1/') graph.bind('dc', dc) owl = Namespace('http://www.w3.org/2002/07/owl#') graph.bind('owl', owl) xsd = Namespace('http://www.w3.org/2001/XMLSchema#') graph.bind('xsd', xsd) input = { 'au': "Audio Signal", 'tee': "Temporal Energy Envelope", 'stft': "Short-term Fourier Transform", 'erb': "Auditory model", 'harm': "Harmonic" } graph.add(( URIRef(af+"AudioDescriptor"), RDF.type, OWL.Class )) graph.add(( URIRef(af+"AudioDescriptor"), RDFS.label, Literal("Timbre Toolbox Audio Descriptor", lang="en") )) graph.add(( URIRef(af+"InputSignal"), RDF.type, OWL.Class )) graph.add(( URIRef(af+"InputSignal"), RDFS.label, Literal("Timbre Toolbox Input Representation", lang="en") )) graph.add(( URIRef(af+"inputRepresentation"), RDF.type, OWL.ObjectProperty )) graph.add(( URIRef(af+"inputRepresentation"), RDFS.domain, URIRef(af+"AudioDescriptor") )) graph.add(( URIRef(af+"inputRepresentation"), RDFS.range, URIRef(af+"InputSignal") )) for inkey in input.keys(): id = af+input[inkey].replace(" ", "") graph.add(( URIRef(id), RDF.type, OWL.Class )) graph.add(( URIRef(id), RDFS.label, Literal(input[inkey], lang="en") )) graph.add(( URIRef(id), RDFS.subClassOf, URIRef(af+"InputSignal") )) features = { 'Global Descriptors': [ {"Attack": "tee"}, {"Decay": "tee"}, {"Release": "tee"}, {"Log-Attack Time": "tee"}, {"Attack Slope": "tee"}, {"DecreaseSlope": "tee"}, {"Temporal Centroid": "tee"}, {"Effective Duration": "tee"}, {"Frequency of Energy Modulation": "tee"}, {"Amplitude of Energy Modulation": "tee"} ], 'Time-Varying Descriptors': [ {"Autocorrelation": 'au'}, {"Zero Crossing Rate": 'au'}, {"RMS-Energy Envelope": 'tee'}, {"Spectral Centroid": 'stft,erb,harm'}, {"Spectral Spread": 'stft,erb,harm'}, {"Spectral Skewness": 'stft,erb,harm'}, {"Spectral Kurtosis": 'stft,erb,harm'}, {"Spectral Slope": 'stft,erb,harm'}, {"Spectral Decrease": 'stft,erb,harm'}, {"Spectral Rolloff": 'stft,erb,harm'}, {"Spectro-temporal Variation": 'stft,erb,harm'}, {"Spectral Flatness": 'stft,erb'}, {"Spectral Crest": 'stft,erb'}, {"Harmonic Energy": 'harm'}, {"Noise Energy": 'harm'}, {"Noisiness": 'harm'}, {"Fundamental Frequency": 'harm'}, {"Inharmonicity": 'harm'}, {"Tristimulus": 'harm'}, {"Harmonic Spectral Deviation": 'harm'}, {"Odd to even harmonic ratio": 'harm'} ] } for temporal in features.keys(): auid = af + temporal[:-1].replace("-", "").replace(" ", "") graph.add(( URIRef(auid), RDF.type, OWL.Class )) graph.add(( URIRef(auid), RDFS.subClassOf, URIRef(af+"AudioDescriptor") )) for feature in features[temporal]: name = feature.keys()[0] id = af + name.replace(" ", "") #graph.add(( # URIRef(id), # RDF.type, # OWL.Class #)) graph.add(( URIRef(id), RDF.type, URIRef(af+"AudioFeature") )) graph.add(( URIRef(id), RDFS.label, Literal(name, lang="en") )) graph.add(( URIRef(id), RDFS.subClassOf, URIRef(auid) )) for inp in feature[name].split(","): graph.add(( URIRef(id), URIRef(af+"inputRepresentation"), URIRef(af+input[inp].replace(" ", "")) )) graph.serialize('/Users/alo/MusicOntology/features/rdfonto/TimbreToolbox-onto.rdf') graph.serialize('/Users/alo/MusicOntology/features/rdfonto/TimbreToolbox-onto.n3', format="n3")