Mercurial > hg > afontology
diff ontology/released/audio_features.n3 @ 0:5ea2f132a40c
added old ontology, some documentation and graphs
author | gyorgyf |
---|---|
date | Thu, 23 Feb 2012 10:39:00 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ontology/released/audio_features.n3 Thu Feb 23 10:39:00 2012 +0000 @@ -0,0 +1,671 @@ +@prefix owl: <http://www.w3.org/2002/07/owl#> . +@prefix tl: <http://purl.org/NET/c4dm/timeline.owl#> . +@prefix time: <http://www.w3.org/2006/time#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix event: <http://purl.org/NET/c4dm/event.owl#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix dc: <http://purl.org/dc/elements/1.1/> . +@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#> . +@prefix af: <http://purl.org/ontology/af/> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix mo: <http://purl.org/ontology/mo/> . + +# Ontology header +<> a owl:Ontology; + dc:title "The Audio Features ontology"; + owl:versionInfo "Revision: 1.1"; + rdfs:label "The Audio Features ontology"; + dc:description """ + This ontology expresses some common concepts + to represent automatically extracted features + from audio signals. Therefore, it mainly relies + on the Event ontology, in order to classify particular + parts of the timeline backing an audio signal. + + Programs outputting RDF according to this ontology should + also describe the ouputted document to express some information + about itself (estimated confidence, maintainer of the program, etc.) + """; + dc:creator <http://moustaki.org/foaf.rdf#moustaki>; + foaf:maker <http://moustaki.org/foaf.rdf#moustaki>; + dc:date "$Date: 2008/06/23 10:24:13 $"; + . + +# Status of terms +vs:term_status a owl:AnnotationProperty. + +# +# PART 0 +# +# - This part of the ontology deals with track-level features +# +af:Signal + a owl:Class; + vs:term_status "testing"; + rdfs:label "Signal-level feature"; + rdfs:subClassOf mo:Signal; + rdfs:comment """ + A signal-like feature, holding dense data describing another signal. + Examples of signal features include chromagrams, spectrograms, onset detection functions etc. + """; + . +af:Chromagram + a owl:Class; + vs:term_status "testing"; + rdfs:label "Chromagram"; + rdfs:subClassOf af:Signal; + rdfs:comment """ + A chromagram feature. + """; + . +af:DetectionFunction # Following Chris's suggestion at http://www.omras2.com/cgi-sys/cgiwrap/musicstr/view/Main/AudioFeaturesOntology + a owl:Class; + vs:term_status "testing"; + rdfs:label "Detection function"; + rdfs:subClassOf af:Signal; + rdfs:comment """ + A detection function. + """; + . +af:TempoDetectionFunction + a owl:Class; + vs:term_status "testing"; + rdfs:label "Tempo detection function"; + rdfs:subClassOf af:DetectionFunction; + rdfs:comment """ + A tempo detection function + """; + . +af:OnsetDetectionFunction + a owl:Class; + vs:term_status "testing"; + rdfs:label "Onset detection function"; + rdfs:subClassOf af:DetectionFunction; + rdfs:comment """ + An onset detection function + """; + . +af:TonalChangeDetectionFunction + a owl:Class; + vs:term_status "testing"; + rdfs:label "Tonal change detection function"; + rdfs:subClassOf af:DetectionFunction; + rdfs:comment """ + A tonal change detection function + """; + . +af:TonalContentSpace + a owl:Class; + vs:term_status "testing"; + rdfs:label "Tonal content space"; + rdfs:subClassOf af:Signal; + rdfs:comment """ + A 6-D tonal content space + """; + . +af:Amplitude + a owl:Class; + vs:term_status "testing"; + rdfs:label "Amplitude"; + rdfs:subClassOf af:Signal; + rdfs:comment """ + Result of an amplitude following process + """; + . +af:SpectralCentroid + a owl:Class; + vs:term_status "testing"; + rdfs:label "Spectral centroid"; + rdfs:subClassOf af:Signal; + rdfs:comment """ + Spectral centroid + """; + . +af:LogFrequencyCentroid + a owl:Class; + vs:term_Status "testing"; + rdfs:label "Log-frequency spectral centroid"; + rdfs:subClassOf af:SpectralCentroid; + rdfs:comment """ + Log-frequency spectral centroid + """; + . +af:LinearFrequencyCentroid + a owl:Class; + vs:term_status "testing"; + rdfs:label "Linear-frequency spectral centroid"; + rdfs:subClassOf af:SpectralCentroid; + rdfs:comment """ + Log-frequency spectral centroid + """; + . +af:ZeroCrossingCount + a owl:Class; + vs:term_status "testing"; + rdfs:label "Zero-crossing counts"; + rdfs:subClassOf af:Signal; + rdfs:comment """ + Zero-crossing counts + """; + . + +af:signal_feature + a owl:DatatypeProperty; + vs:term_status "testing"; + rdfs:domain mo:Signal; + rdfs:label "signal-level feature"; + rdfs:range af:Signal; + rdfs:comment """ + Associates an audio signal with a track-level signal feature. + eg. a spectrogram, a chromagram, an onset detection function. + """; + . +af:value + a owl:DatatypeProperty; + vs:term_status "testing"; + rdfs:subPropertyOf rdf:value; # Not sure about that bit + rdfs:domain af:Signal; + rdfs:label "value"; + rdfs:comment """ + Associates a signal resource as defined in the Music Ontology to a literal: its actual value. + For example, it can be used to link an onset detection function to a list of values. + """; + . + +af:dimensions + a owl:DatatypeProperty; + vs:term_status "testing"; + rdfs:domain af:Signal; + rdfs:label "dimensions"; + rdfs:comment """ + Associates a signal with its dimensions, eg. "12 3546". Equivalent to the mpeg7:dim attribute of the mpeg7:Raw + element. + """; + . + +# +# PART 1 +# +# - This part of the ontology deals with classification of time intervals occuring on a timeline +# + +af:Segment a owl:Class; + vs:term_status "testing"; + rdfs:label "Segment"; + rdfs:subClassOf event:Event; + rdfs:comment """ + A classifier for a temporal region corresponding to the output + of an automatic process---an artificial cognitive agent. + """; + rdfs:subClassOf [ + a owl:Restriction; + owl:onProperty event:time; + owl:someValuesFrom tl:Interval + ] + . +af:StructuralSegment a owl:Class; + vs:term_status "testing"; + rdfs:label "Structural Segment"; + rdfs:subClassOf af:Segment; + rdfs:comment """ + A classifier trying to capture the notion of structure in an audio piece. + This classifier should be subsumed by more specific classifiers: speech/music + segmentation, structural music segmmentation (intro, verse, chorus, etc.). + """; + . +af:Point a owl:Class; + vs:term_status "testing"; + rdfs:label "Point"; + rdfs:subClassOf event:Event; + rdfs:comment """ + A classifier for instants corresponding to the output of an automatic process---an + artificial cognitive agent (should be associated to a time:Instant---DL version). + """; + rdfs:subClassOf [ + a owl:Restriction; + owl:onProperty event:time; + owl:someValuesFrom tl:Instant + ] + . + +# Speech-related part + +af:SpeechSegment a owl:Class; + vs:term_status "testing"; + rdfs:label "Speech"; + rdfs:subClassOf af:StructuralSegment; + rdfs:comment """ + A classifier capturing the notion of an audio segment holding speech + content + """; + . +af:Laugh a owl:Class; + vs:term_status "testing"; + rdfs:label "Laugh"; + rdfs:subClassOf af:SpeechSegment; + rdfs:comment """ + A classifier for laugh content + """; + . +af:Text a owl:Class; + vs:term_status "testing"; + rdfs:label "Text"; + rdfs:subClassOf af:SpeechSegment; + rdfs:comment """ + A classifier allowing to associate some text to a segment + """; + . +af:EmotionSegment a owl:Class; + vs:term_status "testing"; + rdfs:label "Emotion segment"; + rdfs:subClassOf af:SpeechSegment; + rdfs:comment """ + A classifier for emotional content + """; + . +af:IdiomSegment a owl:Class; + vs:term_status "testing"; + rdfs:label "Idiom segment"; + rdfs:subClassOf af:SpeechSegment; + rdfs:comment """ + A classifier for recognized idiom (English with Irish accent, etc.) + """; + . +af:PersonSpeaking a owl:Class; + vs:term_status "testing"; + rdfs:label "Person speaking"; + rdfs:comment """ + A classifier associating a FOAF description to a particular segment + (to classify genre, recognized speaker, etc.) + """; + rdfs:subClassOf af:SpeechSegment; + . + +# Music-related part + +af:MusicSegment a owl:Class; + vs:term_status "testing"; + rdfs:label "Music"; + rdfs:subClassOf af:StructuralSegment; + rdfs:comment """ + A classifier capturing the notion of an audio segment holding music. + This classifier can be subsumed with more specific classifiers. + """; + . + +# Interval-based musical features + +af:MusicStructuralSegment a owl:Class; + vs:term_status "testing"; + rdfs:label "Music structural segment"; + rdfs:subClassOf af:MusicSegment; + rdfs:comment """ + Classifier capturing the notion of chorus, verse, intro, bridge, phrase, etc. + """; + . +af:ChordSegment a owl:Class; + vs:term_status "testing"; + rdfs:comment """ + A classifier for chords. Equivalent concept as the one + in the Chord ontology. + """; + owl:equivalentClass <http://purl.org/ontology/chord/ChordEvent>; + rdfs:subClassOf af:MusicSegment; + . +af:KeySegment a owl:Class; + vs:term_status "testing"; + rdfs:comment """ + A classifier for keys. + In case of a \"clean cut\", instances of such events + should have one factor: the detected key (perhaps using the + key ontology at http://purl.org/NET/c4dm/keys.owl). + In other cases, we can put several keys as a factor, maybe with different confidence + factors, using event decomposition. + """; + rdfs:subClassOf af:MusicSegment; + rdfs:label "Key event"; + . +af:TonicSegment a owl:Class; + vs:term_status "testing"; + rdfs:comment """ + A classifier for tonics. + In case of a \"clean cut\", instances of such events have one + factor. In other cases, this event can have several factors, each associated + with a particular confidence using event decomposition. + """; + rdfs:subClassOf af:MusicSegment; + rdfs:label "Tonic event"; + . +af:Major a owl:Class; + vs:term_status "testing"; + rdfs:comment """ + A classifier for a major mode region. + In case of a \"clean cut\", instances of such events have one + factor. In other cases, this event can have several factors, each associated + with a particular confidence using event decomposition. + """; + rdfs:subClassOf af:MusicSegment; + rdfs:label "Major segment"; + . +af:Minor a owl:Class; + vs:term_status "testing"; + rdfs:comment """ + A classifier for a minor mode region. + In case of a \"clean cut\", instances of such events have one + factor. In other cases, this event can have several factors, each associated + with a particular confidence using event decomposition. + """; + rdfs:subClassOf af:MusicSegment; + rdfs:label "Minor segment"; + . +af:Loudness a owl:Class; + vs:term_status "testing"; + rdfs:comment "Event holding a loudness value"; + rdfs:subClassOf af:MusicSegment; #or instant? or both? + rdfs:label "Loudness event"; + . +af:Pitch a owl:Class; + vs:term_status "testing"; + rdfs:comment "Event holding a pitch value (for example coming from a monophonic transcription process)"; + rdfs:subClassOf af:MusicSegment; + rdfs:label "Pitch event"; + . +af:Tempo a owl:Class; + vs:term_status "testing"; + rdfs:comment "Event holding a tempo value (120bpm...)"; + rdfs:subClassOf af:MusicSegment; + rdfs:label "Tempo event"; + . +af:Ornament a owl:Class; + vs:term_status "testing"; + rdfs:subClassOf af:MusicSegment; + rdfs:label "Ornament event"; + rdfs:comment "Classifying a temporal region holding a musical ornament"; + . +af:TimeSignature a owl:Class; + vs:term_status "testing"; + rdfs:subClassOf af:MusicSegment; + rdfs:label "Time signature"; + rdfs:comment "Classifying a temporal region with a particular time signature (what? there is something else than 4/4?? :-)"; + . + + +# Point-based musical features + +# An onset is the start of a musical event: +# {:evt a :Onset;event:time ?t1} => {_:me a :MusicalEvent; event:time ?t2. ?t2 tl:begins ?t1} +af:Onset a owl:Class; + vs:term_status "testing"; + rdfs:label "Onset"; + rdfs:subClassOf af:Point; + rdfs:comment """ + A classifier corresponding to the output of an onset detection process. + """; + . +af:TonalOnset a owl:Class; + vs:term_status "testing"; + rdfs:label "Pitched onset"; + rdfs:subClassOf af:Onset; + rdfs:comment "A pitched onset"; + . +af:NonTonalOnset a owl:Class; + vs:term_status "testing"; + rdfs:label "Percussive onset"; + rdfs:subClassOf af:Onset; + rdfs:comment "A percussive onset"; + . +af:Beat a owl:Class; + vs:term_status "testing"; + rdfs:label "Beat event"; + rdfs:comment "A beat event (instantaneous)"; + rdfs:subClassOf af:Point; + . +af:Pitch a owl:Class; + vs:term_status "testing"; + rdfs:label "Pitch event"; + rdfs:comment "Associate a point to a particular pitch"; + rdfs:subClassOf af:Point; + . +af:KeyChange a owl:Class; + vs:term_status "testing"; + rdfs:label "Key change event"; + rdfs:comment "A key change event. The factor of such an event captures the key that holds after that event."; + rdfs:subClassOf af:Point; + . +af:TonicChange a owl:Class; + vs:term_status "testing"; + rdfs:label "Tonic change event"; + rdfs:comment "A tonic change event. The factors of such events include the tonic that holds after the event."; + rdfs:subClassOf af:Point; + . +af:ModeChange a owl:Class; + vs:term_status "testing"; + rdfs:label "Mode change event"; + rdfs:comment "A mode change event. The factors of such events include the mode that holds after the event."; + rdfs:subClassOf af:Point; + . +af:TonalChange a owl:Class; + vs:term_status "testing"; + rdfs:label "Tonal change event"; + rdfs:comment "A tonal change event."; + rdfs:subClassOf af:Point; + . +af:ZeroCrossing a owl:Class; + vs:term_status "testing"; + rdfs:label "Zero crossing"; + rdfs:comment "Classifier for a zero-crossing point"; + rdfs:subClassOf af:Point; + . + +# +# PART 2 +# +# - This part of the ontology defines some segment-specific concepts +# + +# Custom concepts + +# Speech-related + +af:Idiom a owl:Class; + vs:term_status "testing"; + rdfs:label "Idiom"; + rdfs:comment """ + Idiom (English with Irish accent, Austrian German, etc.) + """; + . +af:EnglishIdiom a owl:Class; + vs:term_status "testing"; + rdfs:label "English idiom"; + rdfs:comment """ + English idiom + """; + . +af:standard_british_english a af:EnglishIdiom; + vs:term_status "testing"; + dc:title "Standard British English"; + . +af:standard_us_english a af:EnglishIdiom; + vs:term_status "testing"; + dc:title "Standard US English"; + . +af:english_irish_accent a af:EnglishIdiom; + vs:term_status "testing"; + dc:title "English with an Irish accent"; + . +af:english_scottish_accent a af:EnglishIdiom; + vs:term_status "testing"; + dc:title "English with a Scottish accent"; + . +af:GermanIdiom a owl:Class; + vs:term_status "testing"; + rdfs:label "German idiom"; + rdfs:comment """ + German idiom + """; + . +af:austrian_german a af:GermanIdiom; + vs:term_status "testing"; + dc:title "Austrian German"; + . +af:swiss_german a af:GermanIdiom; + vs:term_status "testing"; + dc:title "Swiss German"; + . +af:standard_german a af:GermanIdiom; + vs:term_status "testing"; + dc:title "Standard German"; + . +af:HungarianIdiom a owl:Class; + vs:term_status "testing"; + rdfs:label "Hungarian idiom"; + rdfs:comment "Hungarian idiom"; + . +af:standard_hungarian a af:HungarianIdiom; + vs:term_status "testing"; + dc:title "Standard Hungarian"; + . + +# Predicates + +af:text a owl:DatatypeProperty; + vs:term_status "testing"; + a rdf:Property; + rdfs:comment """ + Relates a Text segment (classifying a time interval that can + be associated to some text) to a text string or other literals (number, etc.) + """; + rdfs:subPropertyOf event:hasLiteralFactor; + rdfs:domain af:Text; + rdfs:range rdfs:Literal; + . +af:idiom a owl:DatatypeProperty; + vs:term_status "testing"; + a rdf:Property; + rdfs:comment """ + Associates a segment which classify an idiom (English with Irish accent, etc.) to an actual idiom + """; + rdfs:subPropertyOf event:hasLiteralFactor; + rdfs:domain af:IdiomSegment; + rdfs:range af:Idiom; + . +af:person a owl:ObjectProperty; + vs:term_status "testing"; + a rdf:Property; + rdfs:comment """ + Associates a segment classified as holding speech content to a FOAF + profile (maybe holding information about genre, recognized speaker URI, etc.) + """; + rdfs:label "person"; + rdfs:domain af:PersonSegment; + rdfs:range foaf:Person; + . +af:emotional_intensity a owl:ObjectProperty; + vs:term_status "testing"; + a rdf:Property; + rdfs:comment """ + Associates an \"emotional intensity\" value to a + segment detected as being \"emotional\" + """; + rdfs:label "emotional intensity"; + rdfs:domain af:EmotionSegment; + rdfs:range rdfs:Literal; + . + +af:key a owl:ObjectProperty; + vs:term_status "testing"; + rdfs:domain af:KeySegment; + rdfs:range owl:Thing; # More specific... + rdfs:subPropertyOf event:factor; + rdfs:label "key"; + rdfs:comment "Associates a key event to the corresponding key"; + . +af:new_key a owl:ObjectProperty; + vs:term_status "testing"; + rdfs:domain af:KeyChange; + rdfs:range owl:Thing; + rdfs:subPropertyOf event:factor; + rdfs:label "new key"; + rdfs:comment "Associates a key change event to the new key, holding after the change"; + . +af:tonic a owl:ObjectProperty; + vs:term_status "testing"; + rdfs:domain af:TonicSegment; + rdfs:range owl:Thing; + rdfs:subPropertyOf event:factor; + rdfs:label "tonic"; + rdfs:comment "Associates a tonic event with the corresponding tonic"; + . +af:new_tonic a owl:ObjectProperty; + vs:term_status "testing"; + rdfs:domain af:TonicChangeEvent; + rdfs:range owl:Thing; + rdfs:subPropertyOf event:factor; + rdfs:label "new tonic"; + rdfs:comment "Tonic that holds after the tonic change event"; + . +af:new_mode a owl:ObjectProperty; + vs:term_status "testing"; + rdfs:domain af:ModeChangeEvent; + rdfs:range owl:Thing; + rdfs:subPropertyOf event:factor; + rdfs:label "new mode"; + rdfs:comment "Mode that holds after the mode change event"; + . + + +# Literals associated with features + +af:feature a owl:DatatypeProperty; + vs:term_status "testing"; + a rdf:Property; + rdfs:comment """ + Associates a segment classifying a feature to the actual feature---we should use mpeg7 sort-of datatypes here + """; + rdfs:label "feature"; + rdfs:subPropertyOf event:literal_factor; + rdfs:domain af:Segment; + rdfs:range rdfs:Literal; + . +af:tempo a owl:DatatypeProperty; + rdfs:subPropertyOf af:feature; + vs:term_status "testing"; + rdfs:label "tempo"; + rdfs:domain af:Tempo; + rdfs:comment """ + Associates a tempo event to the corresponding tempo value. + """; + . +af:pitch a owl:DatatypeProperty; + rdfs:subPropertyOf af:feature; + vs:term_status "testing"; + rdfs:label "pitch"; + rdfs:domain af:Pitch; + rdfs:comment """ + Associates a pitch event to the corresponding pitch + """; + . + +#af:mfcc_2_10 (mean/variance) should go there, as well as af:chroma ... + + + +# +# Part III +# +# Generic things, related to outputs of automatic processes +# +# Most of these things should be elsewhere +# + +af:confidence a owl:DatatypeProperty; + vs:term_status "testing"; + a rdf:Property; + rdfs:comment """ + A really generic property, allowing to associate a confidence to a document or to a particular + resource (such as an automatically detected segment) + """; + rdfs:label "confidence"; + rdfs:range rdfs:Literal; + . +