view rdf/vamp.n3 @ 138:147de5e64d28

* Update vamp.n3/rdf from km-rdf * Add template generator (old jerrell version) from sv1 repository * Add provisional RDF descriptions for example plugins
author cannam
date Thu, 19 Jun 2008 09:37:31 +0000
parents 1b1ebb0f10ac
children cabf8e65c10f
line wrap: on
line source
@prefix owl: <http://www.w3.org/2002/07/owl#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix vs: <http://www.w3.org/2003/06/sw-vocab-status/ns#>.
@prefix list: <http://www.w3.org/2000/10/swap/list#>.
@prefix dc: <http://purl.org/dc/elements/1.1/>.
@prefix mo: <http://purl.org/ontology/mo/>.
@prefix event: <http://purl.org/NET/c4dm/event.owl#>.
@prefix af: <http://purl.org/ontology/af/>.
@prefix tl: <http://purl.org/NET/c4dm/timeline.owl#>.
@prefix vamp: <http://purl.org/ontology/vamp/>.
@prefix :         <> .

<> 
	a owl:Ontology;
	dc:title "Vamp Plugins Ontology";
	rdfs:label "Vamp Plugins Ontology";
	rdfs:comment """
			Vamp Ontology. This ontology includes the following descriptions
			
				-OWL description of the Vamp API
				-OWL description of the Transform environment necessary to set up the execution of any plugin 
			
			This Ontology provides semantics to describe and control Vamp plugins in RDF. Any "RDF-speaker" host is therefore able to 
			use this ontology to read, set up and execute plugins.
			The extracted features are expressed in terms of the Audio Features Ontology (link).
			For more information, please visit the Vamp Plugins site: http://www.vamp-plugins.org/
	""";
	foaf:maker "Chris Cannam";
	foaf:maker "Chris Sutton";
	foaf:maker "Yves Raimond";
	foaf:maker "David Pastor Escuredo";
        dc:date "$Date: 2008/05/21 17:05:11 $";
	.

vs:term_status a owl:AnnotationProperty.

#Authors foaf

#############################################
# Part 1: Describin a Vamp plugin
#############################################

#########################################
# CLASSES
#########################################

#Note: we don't include Feature concept because we rely on the Audio Feature ontology
#Note: we additionaly define a Transform concept to link the running context

vamp:Plugin
	a owl:Class;
	rdfs:label "Vamp Plugin";
	rdfs:comment """
		Vamp plugin is an implementation of a feature extraction algorithm based on the Vamp API. 
	""";
	vs:term_status "stable";
	.

vamp:PluginLibrary
	a owl:Class;
	rdfs:label "Vamp Plugin Library";
	rdfs:comment """
			Library of Vamp Plugins. This may need to include rights.
	""";
	vs:term_status "stable";
	.

vamp:ParameterDescriptor
	a owl:Class;
	rdfs:label "Vamp Plugin Parameter Descriptor";
	rdfs:comment """
			Descriptior of a plugin parameter. Hosts require to know about the specific type and form of the parameters of a particular plugin for a correct transform setup.
	""";
	vs:term_status "stable";
	.

vamp:PluginOutput
	a owl:Class;
	rdfs:label "Vamp Plugin output descriptor";
	rdfs:comment """
		Descriptior of the plugin output. This descriptor provides necessary information to interpret correctly the output features. The output type will determine how to read the temporal information of the extracted feature and how to manage the burden of ouput data.
	""";
	vs:term_status "unstable";
	.

vamp:DenseOutput
	a owl:Class;
	rdfs:subClassOf vamp:PluginOutput;
	rdfs:label "Dense output";
	rdfs:comment """
			Specific output type comprising large binary data (e.g.: chromagram).
	""";
	vs:term_status "unstable";
	.

vamp:SparseOutput 
	a owl:Class;
	rdfs:label "Sparse output";
	rdfs:subClassOf vamp:PluginOutput;
	rdfs:comment """
			Specific output type used in sparse data outputs (e.g.: key detector).
	""";
	vs:term_status "unstable";
	.

vamp:TrackLevelOutput
	a owl:Class;
	rdfs:label "track level output";
	rdfs:subClassOf vamp:PluginOutput;
	rdfs:comment """
			Specific output type that returns track level information. This sort of output will require a "hacky" interpretation of the feature timestamp as it will reflect some track metadata instead of temporal data.
	""";
	vs:term_status "unstable";
	.

vamp:PluginProgram
	a owl:Class;
	rdfs:label "Plugin program";
	rdfs:comment """
			Plugin program defines a predefined context of parameters. We may not need a concept for this and just a property linking a string representing the program name.
	""";
	vs:term_status "unstable";
	.

vamp:Feature
	a owl:Class;
	rdfs:label "Vamp Feature";
	rdfs:comment "This may be removed mighty soon as we rely on the Audio Features Ontology for this";
	vs:term_status "deprecated";
	.

#Classes for enumerations in the Vamp API

vamp:InputDomain
	a owl:Class;
	rdfs:label "Plugin input domain";
	rdfs:comment """
			Plugins warn about the input domain they require so the host can convert properly the input data. Note that this is not necessary if the host is using a PluginAdapter to wrap plugins (see Vamp doc).
	""";
	vs:term_status "stable";
	.

vamp:SampleType
	a owl:Class;
	rdfs:label "sample type";
	rdfs:comment """
			Sample type specifies the temporal information of the plugin output. This information should be confronted with the output type for a correct interpretation.
	""";
	vs:term_status "stable";
	.

##################################################################
# PROPERTIES. 
##################################################################

##### Plugin properties

vamp:parameter_descriptor
	a rdf:Property;
	a owl:ObjectProperty;
	rdfs:label "parameter descriptor";
	rdfs:comment """
			Links each parameter descriptor to the plugin.
	""";
	rdfs:range vamp:ParameterDescriptor;
	rdfs:domain vamp:Plugin;
	vs:term_status "stable";
	.

vamp:output_descriptor
	a rdf:Property;
	a owl:ObjectProperty;
	rdfs:label "output descriptor";
	rdfs:comment """
			Links each output type to the plugin.
	""";
	rdfs:range vamp:PluginOutput;
	rdfs:domain vamp:Plugin;
	vs:term_status "stable";
	.

##### Plugin Library properties (could include affiliation, rights...)

vamp:available_plugin 
	a rdf:Property;
	a owl:ObjectProperty;
	rdfs:label "available plugin";
	rdfs:comment """
			Available plugins in the library
	""";
	rdfs:range vamp:Plugin;
	rdfs:domain vamp:PluginLibrary;
	vs:term_status "stable";
	.

#### Plugin Descriptor properties

vamp:identifier
	a rdf:Property;
	a owl:DatatypeProperty;
	rdfs:label "plugin identifier";
	rdfs:comment """
		Machine-readable identifier for Vamp plugin classes (and Transform).
	""";
	rdfs:domain vamp:Plugin;
	rdfs:domain vamp:PluginProgram;
	rdfs:domain vamp:PluginOutput;
	rdfs:domain vamp:ParameterDescriptor;
	vs:term_status "stable";
	.

vamp:name
	a rdf:Property;
	a owl:DatatypeProperty;
	rdfs:label "plugin name";
	rdfs:comment """
		Human-readable identifier for the plugin.
	""";
	rdfs:domain vamp:Plugin;
	vs:term_status "stable";
	.

vamp:vamp_API_version
	a rdf:Property;
	a owl:DatatypeProperty;
	rdfs:label "vamp API version";
	rdfs:comment """
			Version of the Vamp API used to implement this plugin.
	""";
	rdfs:domain vamp:Plugin;
	vs:term_status "stable";
	.

vamp:input_domain
	a rdf:Property;
	a owl:DatatypeProperty;
	rdfs:label "input domain";
	rdfs:comment """
			Input domain allowed by the plugin (time or frequency).
	""";
	rdfs:domain vamp:Plugin;
	rdfs:range vamp:InputDomain;
	vs:term_status "stable";
	.

#Note that other properties like maker can be linked to the plugin descriptor using other namespaces

##### Parameter Descriptor properties

#Note: Identifier has been already defined

vamp:max_value
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "max value";
	rdfs:comment """
		Maximum value of the parameter range
	""";
	rdfs:range vamp:ParameterDescriptor;
	rdfs:range vamp:PluginOutput;
	vs:term_status "unstable";
	.

vamp:min_value
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "min value";
	rdfs:comment """
		Minimum value of the parameter range
	""";
	rdfs:range vamp:ParameterDescriptor;
	rdfs:range vamp:PluginOutput;
	vs:term_status "unstable";
	.

vamp:default_value
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "default value";
	rdfs:comment """
		Default value of the parameter
	""";
	rdfs:range vamp:ParameterDescriptor;
	vs:term_status "unstable";
	.

########Output Descriptor properties

vamp:fixed_bin_count 
	a rdf:Property;
	a owl:DatatypeProperty;
	rdfs:label "fixed bin count";
	rdfs:comment """
		Fixed bin count. A boolean type.
	""";
	rdfs:domain vamp:PluginOutput;
	vs:term_status "unstable";
	.

vamp:is_quantized
	a rdf:Property;
	a owl:DatatypeProperty;
	rdfs:label "is quantised";
	rdfs:comment """
		Quantised. A boolean type.
	""";
	rdfs:domain vamp:PluginOutput;
	vs:term_status "unstable";
	.

vamp:unit 
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "unit";
	rdfs:comment """
		Unit of the output/parameter. A string type
	""";
	rdfs:domain vamp:PluginOutput;
	rdfs:domain vamp:ParameterDescriptor;
	vs:term_status "unstable";
	.

vamp:sample_rate
	a rdf:Property;
	a owl:DatatypeProperty;
	rdfs:label "sample rate";
	rdfs:comment """
		Sample rate of the output if any. Should be read depending on SampleType and Output classes.
	""";
	rdfs:domain vamp:PluginOutput;
	vs:term_status "unstable";
	.

vamp:quantize_step
	a rdf:Property;
	a owl:FunctionalProperty;
	a owl:DatatypeProperty;
	rdfs:label "quantized step";
	rdfs:comment """
		Quantize step. Only defined if is_quantised is true
	""";
	rdfs:domain vamp:PluginOutput;
	rdfs:domain vamp:ParameterDescriptor;
	vs:term_status "unstable";
	.
	
vamp:bin_count      
	a rdf:Property;
	a owl:DatatypeProperty;
	rdfs:label "bin count";
	rdfs:comment """
		Number of elements of the bin output. This information is necessary to define the output as belonging to a specific subclass of Plugin Output.
	""";
	rdfs:domain vamp:PluginOutput;
	vs:term_status "unstable";
	.

vamp:bin_names  
	a rdf:Property;
	a owl:DatatypeProperty;
	rdfs:label "bin names";
	rdfs:comment """
		List of bin names if available
	""";
	rdfs:domain vamp:PluginOutput;
	vs:term_status "unstable";
	.

vamp:sample_type  
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "sample type";
	rdfs:comment """
		The sample type specifies the temporal information of the output.
	""";
	rdfs:domain vamp:PluginOutput;
	rdfs:range vamp:SampleType;
	vs:term_status "unstable";
	.

vamp:computes_feature_type
	a rdf:Property;
	a owl:ObjectProperty;
	rdfs:label "feature type";
	rdfs:comment """
			Feature Types output by the plugin. Links the vamp ontology to the audio features ontology.
	""";
	rdfs:domain vamp:PluginOutput;
	rdfs:range af:AudioFeature;
	vs:term_status "unstable";
	.

vamp:computes_event_type
	a rdf:Property;
	a owl:ObjectProperty;
	rdfs:label "event type";
	rdfs:comment """
			Event Type output by the plugin.
	""";
	rdfs:domain vamp:PluginOutput;
	rdfs:range event:Event;
	vs:term_status "unstable";
	.
	
########################
# INDIVIDUALS
########################

vamp:TimeDomain 
	a vamp:InputDomain;
	.

vamp:FrequencyDomain
	a vamp:InputDomain;
	.

vamp:OneSamplePerStep
	a vamp:SampleType;
	.

vamp:FixedSampleRate
	a vamp:SampleType;
	.

vamp:VariableSampleRate
	a vamp:SampleType; 
	.

################################################### END OF THE VAMP API DESCRIPTION ############################################################


#############################################
# Part 2: Classes to describe de execution. TRANSFORM
#############################################

#Note: we need to define this part of the ontology to give a minimun common standard for hosts.
#Note: this may split up in some other ontology or become part of the DSP namespace

vamp:Transform
	a owl:Class;
	rdfs:label "Transform";
	vs:term_status "stable";
	rdfs:comment """
			The Transform defines the environment of any audio processing computation. 
	""";
	.

vamp:Parameter
	a owl:Class;
	rdfs:label "Parameter";
	vs:term_status "unstable";
	rdfs:comment """
			Parameter used by the plugin transform to set up the plugin. The parameter class instances should be instantiated according to the specific vamp:PluginDescriptor instance for each plugin.
	""";
	.

vamp:Configuration
	a owl:Class;
	rdfs:label "Configuration";
	vs:term_status "unstable";
	rdfs:comment """
			For extension (SV implementation of Transform).
	""";
	.

vamp:TransformType
	a owl:Class;
	rdfs:label "Transform Type";
	vs:term_status "unstable";
	rdfs:comment """
		Specifies the type of transform. May be feature extraction, effect...
	""";
	.

##individuals of transfortype
vamp:FeatureExtraction
	a vamp:TransformType;
	rdfs:label "Feature Extraction";
	vs:term_status "unstable";
	rdfs:comment """
		Feature extraction transform. This may be just a subclass of Transform...
	""";
	.

vamp:Effect
	a vamp:TransformType;
	rdfs:label "Effect";
	vs:term_status "unstable";
	rdfs:comment """
		Effect transform. This may be just a subclass of Transform...
	""";
	.

################
# Properties
################

##### Plugin Transform properties

vamp:identifier
	rdfs:domain vamp:Transform;
	#the ID is the plugin ID?
	.

vamp:engine
	a rdf:Property;
	a owl:ObjectProperty;
	rdfs:label "plugin";
	vs:term_status "stable";
	rdfs:comment """
			Specifies the plugin in execution. This is an extension to use Transform with other plugin libraries
	""";
	rdfs:domain vamp:Transform;
	rdfs:range vamp:Plugin;
	.

vamp:program
	a rdf:Property;
	a owl:ObjectProperty;
	a owl:FunctionalProperty;
	rdfs:label "program";
	vs:term_status "stable";
	rdfs:comment """
			Specifies the program to set the plugin in execution.  Here the plugin program matches with the one in the plugin descriptor. There is not descriptor required for the program (just a string), is it?
	""";
	rdfs:domain vamp:Transform;
	rdfs:range vamp:PluginProgram;
	.

vamp:program
	a rdf:Property;
	a owl:ObjectProperty;
	a owl:FunctionalProperty;
	rdfs:label "program";
	vs:term_status "stable";
	rdfs:comment """
			Extension for configuration. 
	""";
	rdfs:domain vamp:Transform;
	rdfs:range vamp:Configuration;
	.

vamp:parameter
	a rdf:Property;
	a owl:ObjectProperty;
	rdfs:label "parameter";
	vs:term_status "stable";
	rdfs:comment """
			Specifies the parameter to set the plugin in execution. 
	""";
	rdfs:domain vamp:Transform;
	rdfs:range vamp:Parameter;
	.

vamp:step_size
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "step size";
	vs:term_status "stable";
	rdfs:comment """
			Specifies the step size for the framing. 
	""";
	rdfs:domain vamp:Transform;
	.

vamp:block_size
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "block size";
	vs:term_status "stable";
	rdfs:comment """
			Specifies the block size for the framing. 
	""";
	rdfs:domain vamp:Transform;
	.

vamp:sample_rate
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "sample rate";
	vs:term_status "stable";
	rdfs:comment """
			Specifies the sample rate if it is not constant.
	""";
	rdfs:domain vamp:Transform;
	.

vamp:transform_type
	a rdf:Property;
	a owl:ObjectProperty;
	a owl:FunctionalProperty;
	rdfs:label "transform type";
	vs:term_status "unstable";
	rdfs:comment """
			Specifies the transform type (we could do this by subclassin transform instead of using a property). 
	""";
	rdfs:domain vamp:Transform;
	.

vamp:window_type
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "window type";
	vs:term_status "unstable";
	rdfs:comment """
			Specifies the window type (they should be individuals and clearly not here). 
	""";
	rdfs:domain vamp:Transform;
	.

vamp:start
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "start";
	vs:term_status "unstable";
	rdfs:comment """
			Specifies temporal information when processing a data stream. 
	""";
	rdfs:domain vamp:Transform;
	.

vamp:duration
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "start";
	vs:term_status "unstable";
	rdfs:comment """
			Specifies temporal information when processing a data stream. 
	""";
	rdfs:domain vamp:Transform;
	.
	
##### Parameter properties

vamp:value
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "value";
	vs:term_status "stable";
	rdfs:comment """
			Specifies the current value of the parameter. 
	""";
	rdfs:domain vamp:Parameter;
	.

vamp:parameter_descriptor
	a rdf:Property;
	a owl:ObjectProperty;
	rdfs:label "parameter descriptor";
	vs:term_status "stable";
	rdfs:comment """
			Specifies exactly the type of descriptor to set in the transform by linking it.
	""";
	rdfs:domain vamp:Parameter;
	rdfs:range vamp:ParameterDescriptor;
	.