Daniel@0: @prefix rdfs: . Daniel@0: @prefix owl: . Daniel@0: @prefix xsd: . Daniel@0: @prefix rdf: . Daniel@0: @prefix dml: . Daniel@0: @prefix vamp: . Daniel@0: @prefix dc: . Daniel@0: @prefix qmplugbase: . Daniel@0: @prefix silvetplugbase: . Daniel@0: Daniel@0: # This file defines an ontology, which also imports the vamp plugin ontology Daniel@0: a owl:Ontology; Daniel@0: owl:imports . Daniel@0: Daniel@0: # Our highest level class is a dml:Transform Daniel@0: dml:Transform a owl:Class . Daniel@0: dml:CollectionLevelAnalysis rdfs:subClassOf dml:Transform . Daniel@0: Daniel@0: dml:type rdfs:subPropertyOf rdf:type . Daniel@0: Daniel@0: vamp:Transform rdfs:subClassOf dml:Transform . Daniel@0: Daniel@0: dml:input a owl:ObjectProperty . Daniel@0: dml:output a owl:ObjectProperty . Daniel@0: Daniel@0: # A CollectionLevelKeyTonic is a CollectionLevelAnalysis, Daniel@0: # it requires at least one input, and these inputs Daniel@0: # will all be outputs from the qm keydetector vamp plugin. Daniel@0: dml:CollectionLevelKeyTonic rdfs:subClassOf dml:CollectionLevelAnalysis ; Daniel@0: owl:equivalentClass [ a owl:Restriction ; Daniel@0: owl:onProperty dml:collectionLevelKeyTonicInput ; Daniel@0: owl:minCardinality 1] ; Daniel@0: owl:equivalentClass [ a owl:Restriction ; Daniel@0: owl:onProperty dml:collectionLevelKeyTonicOutput ; Daniel@0: owl:cardinality 1] . Daniel@0: Daniel@0: dml:collectionLevelKeyTonicInput rdfs:subPropertyOf dml:input ; Daniel@0: rdfs:range qmplugbase:qm-keydetector_output_tonic . Daniel@0: Daniel@0: dml:collectionLevelKeyTonicOutput rdfs:subPropertyOf dml:output ; Daniel@0: rdfs:range dml:KeyTonicHistogram . Daniel@0: Daniel@0: # A (Tonic) Key Histogram is defined as: Daniel@0: dml:KeyTonicHistogram a vamp:DenseOutput ; Daniel@0: vamp:identifier "keytonichistogram" ; Daniel@0: dc:title "Key Tonic Histogram" ; Daniel@0: dc:description "Histogram of estimated tonic key (from C major = 1 to B major = 12)." ; Daniel@0: vamp:fixed_bin_count "true" ; Daniel@0: vamp:unit "" ; Daniel@0: vamp:bin_count 12 ; Daniel@0: vamp:bin_names ( "C" "C#" "D" "D#" "E" "F" "F#" "G" "G#" "A" "A#" "B"); Daniel@0: owl:intersectionOf ( Daniel@0: [ a owl:Restriction; Daniel@0: owl:onProperty dml:sample_count ; Daniel@0: owl:cardinality 1] Daniel@0: [ a owl:Restriction; Daniel@0: owl:onProperty dml:bin ; Daniel@0: owl:cardinality 12] ) . Daniel@0: Daniel@0: dml:bin a owl:ObjectProperty ; Daniel@0: rdfs:range dml:Bin . Daniel@0: Daniel@0: dml:Bin a owl:Class; Daniel@0: owl:intersectionOf ( Daniel@0: [ a owl:Restriction; Daniel@0: owl:onProperty dml:bin_number ; Daniel@0: owl:cardinality 1] Daniel@0: [ a owl:Restriction; Daniel@0: owl:onProperty dml:bin_value ; Daniel@0: owl:cardinality 1] Daniel@0: [ a owl:Restriction; Daniel@0: owl:onProperty dml:bin_name ; Daniel@0: owl:minCardinality 0] Daniel@0: # [ a owl:Restriction; Daniel@0: # owl:onProperty dml:bin_lower_limit ; Daniel@0: # owl:cardinality 1] Daniel@0: # [ a owl:Restriction; Daniel@0: # owl:onProperty dml:bin_upper_limit ; Daniel@0: # owl:cardinality 1] Daniel@0: ) . Daniel@0: Daniel@0: dml:bin_number a owl:DatatypeProperty ; Daniel@0: rdfs:range xsd:integer . Daniel@0: Daniel@0: dml:bin_value a owl:DatatypeProperty . Daniel@0: Daniel@0: dml:bin_name a owl:DatatypeProperty ; Daniel@0: rdfs:range xsd:string . Daniel@0: Daniel@0: dml:sample_count a owl:DatatypeProperty ; Daniel@0: rdfs:range xsd:integer . Daniel@0: Daniel@0: # A Key Histogram is defined as: Daniel@0: dml:KeyHistogram a vamp:DenseOutput ; Daniel@0: vamp:identifier "keyhistogram" ; Daniel@0: dc:title "Key Histogram" ; Daniel@0: dc:description "Histogram of estimated key (from C major = 1 to B major = 12 and C minor = 13 to B minor = 24)." ; Daniel@0: vamp:fixed_bin_count "true" ; Daniel@0: vamp:unit "" ; Daniel@0: vamp:bin_count 24 ; Daniel@0: vamp:bin_names ( "Cmaj" "C#maj" "Dmaj" "D#maj" "Emaj" "Fmaj" "F#maj" "Gmaj" "G#maj" "Amaj" "A#maj" "Bmaj" "Cmin" "C#min" "Dmin" "D#min" "Emin" "Fmin" "F#min" "Gmin" "G#min" "Amin" "A#min" "Bmin"); Daniel@0: dml:sample_count [ a xsd:integer] ; Daniel@0: owl:equivalentClass [ a owl:Restriction ; Daniel@0: owl:onProperty dml:bin ; Daniel@0: owl:cardinality 24] . Daniel@0: Daniel@0: Daniel@0: Daniel@0: # A CollectionLevelTuningFrequencyStatistics is a CollectionLevelAnalysis, Daniel@0: # it requires at least one input, and these inputs Daniel@0: # will all be outputs from the silvet transcription plugin. Daniel@0: dml:CollectionLevelTuningFrequencyStatistics rdfs:subClassOf dml:CollectionLevelAnalysis ; Daniel@0: owl:equivalentClass [ a owl:Restriction ; Daniel@0: owl:onProperty dml:collectionLevelTuningFrequencyStatisticsInput ; Daniel@0: owl:minCardinality 1] ; Daniel@0: owl:equivalentClass [ a owl:Restriction ; Daniel@0: owl:onProperty dml:collectionLevelTuningFrequencyStatisticsOutput ; Daniel@0: owl:cardinality 1] . Daniel@0: Daniel@0: dml:collectionLevelTuningFrequencyStatisticsInput rdfs:subPropertyOf dml:input ; Daniel@0: rdfs:range silvetplugbase:silvet_output_notes . Daniel@0: Daniel@0: dml:collectionLevelTuningFrequencyStatisticsOutput rdfs:subPropertyOf dml:output ; Daniel@0: rdfs:range dml:TuningFrequencyStatistics . Daniel@0: Daniel@0: # TuningFrequencyStatistics is defined as: Daniel@0: dml:TuningFrequencyStatistics a vamp:DenseOutput ; Daniel@0: vamp:identifier "tuningfrequencystatistics" ; Daniel@0: dc:title "Tuning Frequency Statistics" ; Daniel@0: dc:description "Statistics of Estimated Tuning Frequency including mean, standard deviation and histogram" ; Daniel@0: owl:intersectionOf ( Daniel@0: [ a owl:Restriction; Daniel@0: owl:onProperty dml:mean ; Daniel@0: owl:cardinality 1] Daniel@0: [ a owl:Restriction; Daniel@0: owl:onProperty dml:std_dev ; Daniel@0: owl:cardinality 1] Daniel@0: [ a owl:Restriction; Daniel@0: owl:onProperty dml:bin ; Daniel@0: owl:cardinality 100]) . Daniel@0: Daniel@0: dml:mean a owl:DatatypeProperty ; Daniel@0: rdfs:range xsd:float . Daniel@0: Daniel@0: dml:std_dev a owl:DatatypeProperty ; Daniel@0: rdfs:range xsd:float . Daniel@0: Daniel@0: # A CollectionLevelSemitone is a CollectionLevelAnalysis, Daniel@0: # it requires at least one input, and these inputs Daniel@0: # will all be outputs from the http://vamp-plugins.org/rdf/plugins/silvet#silvet plugin. Daniel@0: dml:CollectionLevelSemitone rdfs:subClassOf dml:CollectionLevelAnalysis ; Daniel@0: owl:intersectionOf ( Daniel@0: [ a owl:Restriction ; Daniel@0: owl:onProperty dml:collectionLevelSemitoneInput ; Daniel@0: owl:minCardinality 1] Daniel@0: [ a owl:Restriction ; Daniel@0: owl:onProperty dml:collectionLevelSemitoneOutput ; Daniel@0: owl:cardinality 1] ) . Daniel@0: Daniel@0: dml:collectionLevelSemitoneInput rdfs:subPropertyOf dml:input ; Daniel@0: rdfs:range silvetplugbase:silvet_output_notes . Daniel@0: Daniel@0: dml:collectionLevelSemitoneOutput rdfs:subPropertyOf dml:output ; Daniel@0: rdfs:range dml:SemitoneHistogram . Daniel@0: Daniel@0: # A Semitone Histogram is defined as: Daniel@0: dml:SemitoneHistogram a vamp:DenseOutput ; Daniel@0: vamp:identifier "semitonehistogram" ; Daniel@0: dc:title "Semitone Histogram" ; Daniel@0: dc:description "Histogram of estimated semitones" ; Daniel@0: vamp:fixed_bin_count "false" ; Daniel@0: vamp:unit "" ; Daniel@0: owl:intersectionOf ( Daniel@0: [ a owl:Restriction; Daniel@0: owl:onProperty dml:sample_count ; Daniel@0: owl:cardinality 1] Daniel@0: [ a owl:Restriction; Daniel@0: owl:onProperty dml:bin ; Daniel@0: owl:minCardinality 1] ) .