view rdf/vamp.n3 @ 144:a4aad47aaf96

* Restructure output so that each file describes a plugin library rather than a single plugin (or at least, so that the base uri is for a library -- the file can still contain one or more plugins so long as they all come from the same library). * Make it possible to give the library name instead of individual plugin names on the command line to generate templates for entire library * Make program accept more than one plugin name, too
author cannam
date Fri, 20 Jun 2008 13:44:34 +0000
parents fcf07a78871d
children 6b80bb85083b
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: http://purl.org/ontology/af/.
			For more information, please visit the Vamp Plugins website: 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: Describing a Vamp plugin
#############################################

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

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

vamp:Plugin
	a owl:Class;
	rdfs:label "Vamp Plugin";
	rdfs:comment """
		A Vamp plugin is an implementation of an audio feature extraction algorithm using 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 """
		Descriptor for a plugin parameter. Hosts need 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 """
		Descriptor for an output of a plugin. This descriptor provides information that is necessary to correctly interpret the output features. The output type will determine how to read the temporal information of the extracted features 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 for data evenly spaced in time, which may be of high volume and which it is usually desirable to represent in a compact form.
	""";
	vs:term_status "unstable";
	.

vamp:SparseOutput 
	a owl:Class;
	rdfs:label "Sparse output";
	rdfs:subClassOf vamp:PluginOutput;
	rdfs:comment """
		Specific output type for data that consist of features that require their own individual temporal information.
	""";
	vs:term_status "unstable";
	.

vamp:TrackLevelOutput
	a owl:Class;
	rdfs:label "track level output";
	rdfs:subClassOf vamp:PluginOutput;
	rdfs:comment """
		Specific output type for track level information.  The Vamp API does not provide for this sort of output directly, so this will require a "hacky" interpretation of the feature timestamp to establish that it reflects track metadata instead of temporal data.
	""";
	vs:term_status "unstable";
	.

vamp:PluginProgram
	a owl:Class;
	rdfs:label "Plugin program";
	rdfs:comment """
		The program is 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 declare the input domain they require, so the host can convert the input data properly. Hosts using the Vamp SDK PluginAdapter to wrap plugins should see this work done for them automatically - see the Vamp documentation.
	""";
	vs:term_status "stable";
	.

vamp:SampleType
	a owl:Class;
	rdfs:label "sample type";
	rdfs:comment """
		The sample type specifies the temporal information of the plugin output. This information should be combined 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 a Vamp plugin within the scope of its library, or for a plugin descriptor within the scope of the plugin.
	""";
	rdfs:domain vamp:Plugin;
	rdfs:domain vamp:PluginLibrary;
	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 required 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 plugin 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 (key/value data provided to DSSI plugins, not relevant to Vamp)
	""";
	.

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 transformtype
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 sort of 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;
	.