view rdf/vamp.n3 @ 135:6bffd86a103d

* Add RDF ontology for Vamp plugins [experimental]
author cannam
date Thu, 29 May 2008 14:17:02 +0000
parents
children 1b1ebb0f10ac
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 """
			added comments from Cannam
	""";
	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: Classes to describe the plugin
#############################################

#Note: we don't include Feature concept because we rely on the Audio Feature ontology
#Note: we additionaly define a PluginTransform 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
	""";
	vs:term_status "stable";
	.

vamp:PluginDescription
	a owl:Class;
	rdfs:label "Vamp Plugin Descriptor";
	rdfs:comment """
			The plugin descriptor provides basic metadata of the plugin. We may remove this and link directly to the plugin instance
	""";
	vs:term_status "unstable";
	.

vamp:ParameterDescriptor
	a owl:Class;
	rdfs:label "Vamp Plugin Parameter Descriptor";
	rdfs:comment """
			Descriptior of a plugin parameter
	""";
	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.
		Each plugin will be bound to one of the subclasses.
	""";
	vs:term_status "unstable";
	.

vamp:DenseOutput
	a owl:Class;
	rdfs:subClassOf vamp:PluginOutput;
	rdfs:comment """
			Large binary data as output.
	""";
	vs:term_status "unstable";
	.

vamp:SparseOutput 
	a owl:Class;
	rdfs:subClassOf vamp:PluginOutput;
	rdfs:comment """
			The output defines events with no large data associated.
	""";
	vs:term_status "unstable";
	.

vamp:TrackLevelOutput
	a owl:Class;
	rdfs:subClassOf vamp:PluginOutput;
	rdfs:comment """
			We obtain track metadata?
	""";
	vs:term_status "unstable";
	.

vamp:PluginProgram
	a owl:Class;
	rdfs:label "Plugin program";
	rdfs:comment """
			Plugin program defines a predefined context of parameters.
	""";
	vs:term_status "stable";
	.

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 "Plugin input domain";
	vs:term_status "stable";
	.

vamp:SampleType
	a owl:Class;
	rdfs:label "sample type";
	rdfs:comment "sample type for the plugin output";
	vs:term_status "stable";
	.




##################################################################
# PROPERTIES. Some of them can be declared as builtins.
##################################################################

##### Plugin properties

vamp:plugin_descriptor
	a rdf:Property;
	a owl:ObjectProperty;
	rdfs:label "plugin descriptor";
	rdfs:comment """
			Links the plugin descriptor to the plugin (it may be redundant for an RDF decription to have a plugin descriptor).
	""";
	rdfs:range vamp:PluginDescription;
	rdfs:domain vamp:Plugin;
	vs:term_status "stable";
	.

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 descriptor to the plugin.
	""";
	rdfs:range vamp:PluginOutput;
	rdfs:domain vamp:Plugin;
	vs:term_status "stable";
	.

##### Plugin Library properties

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 Transform

vamp:parameter
	a rdf:Property;
	a owl:ObjectProperty;
	rdfs:label "parameter";
	rdfs:comment """
			Actual parameter used in the plugin transform to run the plugin
	""";
	rdfs:range vamp:Plugin;
	rdfs:domain vamp:PluginTransform;
	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.
	""";
	rdfs:domain vamp:PluginDescription;
	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:PluginDescription;
	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 for the plugin.
	""";
	rdfs:domain vamp:PluginDescription;
	vs:term_status "stable";
	.

vamp:input_domain
	a rdf:Property;
	a owl:DatatypeProperty;
	rdfs:label "input domain";
	rdfs:comment """
			Input domain for 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";
	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";
	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";
	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";
	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";
	rdfs:domain vamp:PluginOutput;
	vs:term_status "unstable";
	.

vamp:quantized_step
	a rdf:Property;
	a owl:FunctionalProperty;
	a owl:DatatypeProperty;
	rdfs:label "quantized step";
	rdfs:comment "quantized step (if any)";
	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 "bin count";
	rdfs:domain vamp:PluginOutput;
	vs:term_status "unstable";
	.

vamp:bin_names  
	a rdf:Property;
	a owl:DatatypeProperty;
	rdfs:label "bin names";
	rdfs:comment "bin names";
	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 "sample type";
	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
	""";
	rdfs:domain vamp:PluginOutput;
	rdfs:range rdfs:Literal;
	#This should be substituted by af:Feature i think. Definitely Literal is not right here.
	vs:term_status "unstable";
	.
	
########################
# INDIVIDUALS
########################

vamp:time_domain 
	a vamp:InputDomain;
	.

vamp:frequency_domain
	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 (to move somewhere else)
#############################################

#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 (cool)

vamp:Transform
	a owl:Class;
	rdfs:label "Plugin Transform";
	vs:term_status "stable";
	rdfs:comment """
			The plugin transform defines the context of the feature extraction process. 
	""";
	.

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.
	""";
	.

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

##### Plugin Transform properties

vamp:plugin
	a rdf:Property;
	a owl:ObjectProperty;
	rdfs:label "plugin";
	vs:term_status "stable";
	rdfs:comment """
			Specifies the plugin in execution. 
	""";
	rdfs:domain vamp:PluginTransform;
	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. 
	""";
	rdfs:domain vamp:Transform;
	rdfs:range vamp:PluginProgram;
	.

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:PluginTransform;
	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:PluginTransform;
	.

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:PluginTransform;
	.

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:PluginTransform;
	.

vamp:transform_type
	a rdf:Property;
	a owl:DatatypeProperty;
	a owl:FunctionalProperty;
	rdfs:label "transform type";
	vs:term_status "unstable";
	rdfs:comment """
			Specifies the transform type (they should be individuals). 
	""";
	rdfs:domain vamp:PluginTransform;
	.

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:PluginTransform;
	.

##### 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;
	.