aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core.lv2/ChangeLog3
-rw-r--r--core.lv2/lv2.ttl200
-rw-r--r--core.lv2/manifest.ttl32
3 files changed, 110 insertions, 125 deletions
diff --git a/core.lv2/ChangeLog b/core.lv2/ChangeLog
index 5043095..0d7db59 100644
--- a/core.lv2/ChangeLog
+++ b/core.lv2/ChangeLog
@@ -7,6 +7,9 @@ lv2core (UNRELEASED) unstable; urgency=low
* Move lv2:AmplifierPlugin under lv2:DynamicsPlugin
* Loosen domain restriction of lv2:optionalFeature and lv2:requiredFeature
(to allow re-use in extensions)
+ * Fix definition of lv2:minimum etc. (used for values, not scale points)
+ * More precisely define properties with OWL
+ * Move project metadata to manifest
-- David Robillard <d@drobilla.net> UNRELEASED
diff --git a/core.lv2/lv2.ttl b/core.lv2/lv2.ttl
index 5b93418..4350f8b 100644
--- a/core.lv2/lv2.ttl
+++ b/core.lv2/lv2.ttl
@@ -27,15 +27,14 @@
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix doap: <http://usefulinc.com/ns/doap#> .
-@prefix foaf: <http://xmlns.com/foaf/0.1/> .
####################
## Resource Class ##
####################
-lv2:Resource a rdfs:Class ;
+lv2:Resource a rdfs:Class , owl:Class ;
rdfs:comment """
-An LV2 Resource (e.g. plugin, specification, or any other LV2 related thing)
+An LV2 Resource (e.g. plugin, specification, or any other LV2 related thing).
""" .
@@ -43,7 +42,7 @@ An LV2 Resource (e.g. plugin, specification, or any other LV2 related thing)
## Specification Class ##
#########################
-lv2:Specification a rdfs:Class ;
+lv2:Specification a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Resource ;
rdfs:comment """
An LV2 specification (i.e. this specification, or an LV2 extension).
@@ -59,28 +58,7 @@ more details.
#######################
<http://lv2plug.in/ns/lv2core>
- a doap:Project , lv2:Specification ;
- doap:license <http://usefulinc.com/doap/licenses/mit> ;
- doap:name "LV2" ;
- doap:homepage <http://lv2plug.in> ;
- doap:created "2004-04-21" ;
- doap:shortdesc "An audio plugin interface specification" ;
- doap:programming-language "C" ;
- doap:release [
- doap:revision "3.2" ;
- doap:created "2011-03-17"
- ] ;
- doap:maintainer [
- a foaf:Person ;
- foaf:name "Steve Harris" ;
- foaf:homepage <http://plugin.org.uk/> ;
- rdfs:seeAlso <http://plugin.org.uk/swh.xrdf>
- ] , [
- a foaf:Person ;
- foaf:name "David Robillard" ;
- foaf:homepage <http://drobilla.net/> ;
- rdfs:seeAlso <http://drobilla.net/drobilla.rdf>
- ] ;
+ a lv2:Specification ;
lv2:documentation """
<h4>Overview</h4>
@@ -174,7 +152,7 @@ plugin instances simultaneously.</p>
## Template/Plugin Classes ##
#############################
-lv2:Template a rdfs:Class ;
+lv2:Template a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Resource ;
rdfs:comment """
An abstract plugin-like resource that may not actually be an LV2 plugin
@@ -183,17 +161,11 @@ may have ports, and otherwise mimic the structure of a plugin. This should be
subclassed by extensions that define such things.
""" .
-lv2:Plugin a rdfs:Class ;
+lv2:Plugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Template ;
rdfs:label "Plugin" ;
rdfs:subClassOf [
a owl:Restriction ;
- owl:onProperty rdf:type ;
- owl:hasValue lv2:Plugin ;
- rdfs:comment """
-A Plugin MUST have at least one rdf:type that is lv2:Plugin.
-""" ] , [
- a owl:Restriction ;
owl:onProperty doap:name ;
owl:someValuesFrom xsd:string ;
rdfs:comment """
@@ -203,6 +175,12 @@ with no language tag.
lv2:documentation """
<p>The class which represents an LV2 plugin.</p>
+<p>To be discovered by hosts, plugins MUST explicitly have rdf:type lv2:Plugin
+listed in their bundle's manifest, e.g.:</p>
+<pre>
+&lt;http://example.org/my-plugin&gt; a lv2:Plugin .
+</pre>
+
<p>Plugins SHOULD have a doap:license property whenever possible. The doap:name
property should be at most a few words in length using title capitalization,
e.g. <q>Tape Delay Unit</q>. Use doap:shortdesc or doap:description for more
@@ -214,31 +192,13 @@ detailed descriptions.</p>
## Port Classes ##
##################
-lv2:Port a rdfs:Class ;
+lv2:Port a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Resource ;
rdfs:label "Port" ;
rdfs:subClassOf [
- a owl:Restriction ;
- owl:onProperty rdf:type ;
- owl:someValuesFrom [
- a owl:DataRange ;
- owl:oneOf ( lv2:Port lv2:InputPort lv2:OutputPort )
- ] ;
- rdfs:comment """
-A Port MUST have at least one rdf:type property that is one of lv2:Port,
-lv2:InputPort, or lv2:OutputPort.
-""" ] , [
- a owl:Restriction ;
- owl:onProperty rdf:type ;
- owl:minCardinality 2 ;
- rdfs:comment """
-A Port MUST have at least two rdf:type properties that are some
-subclass of lv2:Port (one for lv2:Port, lv2:InputPort, or lv2:OutputPort,
-and another to describe the specific data type, e.g. lv2:AudioPort).
-""" ] , [
a owl:Restriction ;
owl:onProperty lv2:index ;
- owl:someValuesFrom xsd:nonNegativeInteger ;
+ owl:allValuesFrom xsd:nonNegativeInteger ;
owl:cardinality 1 ;
rdfs:comment """
A port MUST have a single lv2:index which is of type xsd:nonNegativeInteger
@@ -283,7 +243,7 @@ necessarily refer to the same port on all plugins with a given URI (i.e. the
index for a port may differ between plugin binaries).</p>
""" .
-lv2:InputPort a rdfs:Class ;
+lv2:InputPort a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Port ;
rdfs:label "Input port" ;
rdfs:comment """
@@ -291,7 +251,7 @@ Ports of this type will be connected to a pointer to some value, which will
be read by the plugin during their run method.
""" .
-lv2:OutputPort a rdfs:Class ;
+lv2:OutputPort a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Port ;
rdfs:label "Output port" ;
rdfs:comment """
@@ -299,7 +259,7 @@ Ports of this type will be connected to a pointer to some value, which will
be written to by the plugin during their run method.
""" .
-lv2:ControlPort a rdfs:Class ;
+lv2:ControlPort a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Port ;
rdfs:label "Control port" ;
lv2:documentation """
@@ -308,7 +268,7 @@ type <code>float</code>.</p>
""" .
-lv2:AudioPort a rdfs:Class ;
+lv2:AudioPort a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Port ;
rdfs:label "Audio port" ;
lv2:documentation """
@@ -321,13 +281,13 @@ with elements of C type <code>float</code>.</p>
## Mandatory Plugin RDF Properties ##
#####################################
-lv2:port a rdf:Property ;
+lv2:port a rdf:Property , owl:ObjectProperty ;
rdfs:domain lv2:Template ;
rdfs:range lv2:Port ;
rdfs:label "port" ;
rdfs:comment "Relates a Template or Plugin to the Ports it contains" .
-lv2:minorVersion a rdf:Property ;
+lv2:minorVersion a rdf:Property , owl:DatatypeProperty ;
rdfs:domain lv2:Resource ;
rdfs:range xsd:nonNegativeInteger ;
rdfs:label "minor version" ;
@@ -401,7 +361,7 @@ href="http://lv2plug.in/ns/lv2core#minorVersion">lv2:minorVersion</a>, the
property which describes the other half.</p>
""" .
-lv2:microVersion a rdf:Property ;
+lv2:microVersion a rdf:Property , owl:DatatypeProperty ;
rdfs:domain lv2:Resource ;
rdfs:range xsd:nonNegativeInteger ;
rdfs:label "micro version" ;
@@ -419,12 +379,11 @@ documentation on LV2 resource versioning, see <a
href="http://lv2plug.in/ns/lv2core#minorVersion">lv2:minorVersion</a>.</p>
""" .
-lv2:binary a rdf:Property ;
+lv2:binary a rdf:Property , owl:ObjectProperty ;
rdfs:domain lv2:Resource ;
- rdfs:range rdfs:Resource ;
+ rdfs:range owl:Thing ;
rdfs:label "binary" ;
lv2:documentation """
-
<p>The binary of an LV2 resource. The value of this property must be a URI that
resolves to a shared library object (the actual type of this library is system
specific).</p>
@@ -436,8 +395,8 @@ be used to access the descriptor for that plugin. This property may be used
similarly by extensions to relate other resources to their implementations.</p>
""" .
-lv2:appliesTo a rdf:Property ;
- rdfs:domain rdfs:Resource ;
+lv2:appliesTo a rdf:Property , owl:ObjectProperty ;
+ rdfs:domain lv2:Resource ;
rdfs:range lv2:Plugin ;
rdfs:label "Applies to" ;
lv2:documentation """
@@ -464,7 +423,7 @@ not the plugin itself.</p>
## Documentation ##
####################################
-lv2:documentation a rdf:Property ;
+lv2:documentation a rdf:Property , owl:DatatypeProperty ;
rdfs:range rdfs:Literal ;
rdfs:label "documentation" ;
rdfs:seeAlso <http://www.w3.org/TR/xhtml-basic/> ;
@@ -486,7 +445,7 @@ devices). See <a href="http://www.w3.org/TR/xhtml-basic/#s_xhtmlmodules"
## Mandatory Port RDF Properties ##
###################################
-lv2:index a rdf:Property ;
+lv2:index a rdf:Property , owl:DatatypeProperty ;
rdfs:domain lv2:Port ;
rdfs:range xsd:nonNegativeInteger ;
rdfs:label "index" ;
@@ -495,8 +454,7 @@ Specifies the index of the port, passed as an argument to the connect port
function. The index uniqely identifies the port on an instance of the plugin.
""" .
-lv2:symbol a rdf:Property ;
- rdfs:domain lv2:Resource ;
+lv2:symbol a rdf:Property , owl:DatatypeProperty ;
rdfs:label "symbol" ;
rdfs:comment """
A short name used as a machine and human readable identifier.
@@ -509,7 +467,7 @@ identifies the port on a plugin with a given URI (i.e. the plugin author MUST
change the plugin URI if a port symbol is changed or removed).
""" .
-lv2:name a rdf:Property ;
+lv2:name a rdf:Property , owl:DatatypeProperty ;
rdfs:domain lv2:Port ;
rdfs:label "name" ;
rdfs:comment """
@@ -525,7 +483,7 @@ property without changing the Plugin URI.
## Optional Port RDF Properties ##
##################################
-lv2:Point a rdfs:Class ;
+lv2:Point a rdfs:Class , owl:Class ;
rdfs:label "Port value point" ;
rdfs:comment """
Used to describe interesting values in a Port's range. To be valid it
@@ -535,26 +493,26 @@ There are 3 specially defined Points in the LV2 specification (default,
minimum, and maximum), though future extensions may define more.
""" .
-lv2:ScalePoint a rdfs:Class ;
+lv2:ScalePoint a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Point ;
rdfs:comment "A single float Point (for control inputs)." .
-lv2:scalePoint a rdf:Property ;
+lv2:scalePoint a rdf:Property , owl:ObjectProperty ;
rdfs:domain lv2:Port ;
rdfs:range lv2:ScalePoint ;
rdfs:label "Scale point" ;
rdfs:comment "Relates a Port to its ScalePoints." .
-lv2:default a rdf:Property ;
- rdfs:subPropertyOf lv2:scalePoint ;
+lv2:default a rdf:Property , owl:DatatypeProperty ;
+ rdfs:domain lv2:Port ;
rdfs:label "Default value" ;
rdfs:comment """
The default value that the host SHOULD set this port to when there is no
other information available.
""" .
-lv2:minimum a rdf:Property ;
- rdfs:subPropertyOf lv2:scalePoint ;
+lv2:minimum a rdf:Property , owl:DatatypeProperty ;
+ rdfs:domain lv2:Port ;
rdfs:label "Minimum value" ;
lv2:documentation """
A hint to the host for the minimum useful value that the port will use. This
@@ -562,8 +520,8 @@ is a <q>soft</q> limit; the plugin is required to gracefully accept all values
in the range of a port's data type.
""" .
-lv2:maximum a rdf:Property ;
- rdfs:subPropertyOf lv2:scalePoint ;
+lv2:maximum a rdf:Property , owl:DatatypeProperty ;
+ rdfs:domain lv2:Port ;
rdfs:label "Maximum value" ;
lv2:documentation """
<p>A hint to the host for the maximum useful value that the port will use.
@@ -576,14 +534,14 @@ values in the range of a port's data type.</p>
## Features ##
##############
-lv2:Feature a rdfs:Class ;
+lv2:Feature a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Resource ;
rdfs:label "Feature" ;
rdfs:comment """
An additional feature which a plugin or other resource may use or require.
""".
-lv2:optionalFeature a rdf:Property ;
+lv2:optionalFeature a rdf:Property , owl:ObjectProperty ;
rdfs:domain lv2:Resource ;
rdfs:range lv2:Feature ;
rdfs:label "Optional feature" ;
@@ -594,7 +552,7 @@ the plugin in LV2_Descriptor::instantiate(). The plugin MUST NOT fail to
instantiate if an optional feature is not supported by the host.</p>
""" .
-lv2:requiredFeature a rdf:Property ;
+lv2:requiredFeature a rdf:Property , owl:ObjectProperty ;
rdfs:domain lv2:Resource ;
rdfs:range lv2:Feature ;
rdfs:label "Required feature" ;
@@ -612,14 +570,14 @@ instantiate is strongly discouraged).</p>
## PortProperties ##
####################
-lv2:PortProperty a rdfs:Class ;
+lv2:PortProperty a rdfs:Class , owl:Class ;
rdfs:label "Port property" ;
rdfs:comment """
A port property - a useful piece of information that allows a host to make more
sensible decisions (e.g. to provide a better interface).
""" .
-lv2:portProperty a rdf:Property ;
+lv2:portProperty a rdf:Property , owl:ObjectProperty ;
rdfs:domain lv2:Port ;
rdfs:range lv2:PortProperty ;
rdfs:label "Port property" ;
@@ -753,53 +711,53 @@ input value (i.e. round the input value down).
## Plugin Classes ##
####################
-lv2:GeneratorPlugin a rdfs:Class ;
+lv2:GeneratorPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Plugin ;
rdfs:label "Generator" ;
rdfs:comment """
Any plugin that generates sound internally, rather than processing its input.
""" .
-lv2:InstrumentPlugin a rdfs:Class ;
+lv2:InstrumentPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:GeneratorPlugin ;
rdfs:label "Instrument" ;
rdfs:comment """
Any plugin that is intended to be played as a musical instrument.
""" .
-lv2:OscillatorPlugin a rdfs:Class ;
+lv2:OscillatorPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:GeneratorPlugin ;
rdfs:label "Oscillator" .
-lv2:UtilityPlugin a rdfs:Class ;
+lv2:UtilityPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Plugin ;
rdfs:label "Utility" ;
rdfs:comment """
Includes things like mathematical functions and non-musical delays.
""" .
-lv2:ConverterPlugin a rdfs:Class ;
+lv2:ConverterPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:UtilityPlugin ;
rdfs:label "Converter" ;
rdfs:comment """
Any plugin that converts some form of input into a different form of output.
""" .
-lv2:AnalyserPlugin a rdfs:Class ;
+lv2:AnalyserPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:UtilityPlugin ;
rdfs:label "Analyser" ;
rdfs:comment """
Any plugin that analyses input to output some useful information.
""" .
-lv2:MixerPlugin a rdfs:Class ;
+lv2:MixerPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:UtilityPlugin ;
rdfs:label "Mixer" ;
rdfs:comment """
A plugin which mixes some number of inputs into some number of outputs.
""" .
-lv2:SimulatorPlugin a rdfs:Class ;
+lv2:SimulatorPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Plugin ;
rdfs:label "Simulator" ;
rdfs:comment """
@@ -807,72 +765,72 @@ Plugins that aim to duplicate the effect of some environmental effect or
musical equipment.
""" .
-lv2:DelayPlugin a rdfs:Class ;
+lv2:DelayPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Plugin ;
rdfs:label "Delay" ;
rdfs:comment """
Plugins that intentionally delay their input signal as an effect.
""" .
-lv2:ModulatorPlugin a rdfs:Class ;
+lv2:ModulatorPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Plugin ;
rdfs:label "Modulator" .
-lv2:ReverbPlugin a rdfs:Class ;
+lv2:ReverbPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Plugin ;
rdfs:subClassOf lv2:SimulatorPlugin ;
rdfs:subClassOf lv2:DelayPlugin ;
rdfs:label "Reverb" .
-lv2:PhaserPlugin a rdfs:Class ;
+lv2:PhaserPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:ModulatorPlugin ;
rdfs:label "Phaser" .
-lv2:FlangerPlugin a rdfs:Class ;
+lv2:FlangerPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:ModulatorPlugin ;
rdfs:label "Flanger" .
-lv2:ChorusPlugin a rdfs:Class ;
+lv2:ChorusPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:ModulatorPlugin ;
rdfs:label "Chorus" .
-lv2:FilterPlugin a rdfs:Class ;
+lv2:FilterPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Plugin ;
rdfs:label "Filter" .
-lv2:LowpassPlugin a rdfs:Class ;
+lv2:LowpassPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:FilterPlugin ;
rdfs:label "Lowpass" .
-lv2:BandpassPlugin a rdfs:Class ;
+lv2:BandpassPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:FilterPlugin ;
rdfs:label "Bandpass" .
-lv2:HighpassPlugin a rdfs:Class ;
+lv2:HighpassPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:FilterPlugin ;
rdfs:label "Highpass" .
-lv2:CombPlugin a rdfs:Class ;
+lv2:CombPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:FilterPlugin ;
rdfs:label "Comb" .
-lv2:AllpassPlugin a rdfs:Class ;
+lv2:AllpassPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:FilterPlugin ;
rdfs:label "Allpass" .
-lv2:EQPlugin a rdfs:Class ;
+lv2:EQPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:FilterPlugin ;
rdfs:label "Equaliser" .
-lv2:ParaEQPlugin a rdfs:Class ;
+lv2:ParaEQPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:EQPlugin ;
rdfs:label "Parametric" .
-lv2:MultiEQPlugin a rdfs:Class ;
+lv2:MultiEQPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:EQPlugin ;
rdfs:label "Multiband" .
-lv2:SpatialPlugin a rdfs:Class ;
+lv2:SpatialPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Plugin ;
rdfs:label "Spatial" ;
rdfs:comment """
@@ -880,56 +838,56 @@ Plugins that manipulate the position of audio in space (e.g. panning,
stereo width, surround encoding, etc.).
""" .
-lv2:SpectralPlugin a rdfs:Class ;
+lv2:SpectralPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Plugin ;
rdfs:label "Spectral" ;
rdfs:comment """
Plugins that alter the spectral properties (e.g. frequency) of audio.
""" .
-lv2:PitchPlugin a rdfs:Class ;
+lv2:PitchPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:SpectralPlugin ;
rdfs:label "Pitch Shifter" .
-lv2:AmplifierPlugin a rdfs:Class ;
+lv2:AmplifierPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:DynamicsPlugin ;
rdfs:label "Amplifier" .
-lv2:DistortionPlugin a rdfs:Class ;
+lv2:DistortionPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Plugin ;
rdfs:label "Distortion" .
-lv2:WaveshaperPlugin a rdfs:Class ;
+lv2:WaveshaperPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:DistortionPlugin ;
rdfs:label "Waveshaper" .
-lv2:DynamicsPlugin a rdfs:Class ;
+lv2:DynamicsPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:Plugin ;
rdfs:label "Dynamics" ;
rdfs:comment """
Plugins that alter the envelope or dynamic range of audio.
""" .
-lv2:CompressorPlugin a rdfs:Class ;
+lv2:CompressorPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:DynamicsPlugin ;
rdfs:label "Compressor" .
-lv2:ExpanderPlugin a rdfs:Class ;
+lv2:ExpanderPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:DynamicsPlugin ;
rdfs:label "Expander" .
-lv2:LimiterPlugin a rdfs:Class ;
+lv2:LimiterPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:DynamicsPlugin ;
rdfs:label "Limiter" .
-lv2:GatePlugin a rdfs:Class ;
+lv2:GatePlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:DynamicsPlugin ;
rdfs:label "Gate" .
-lv2:FunctionPlugin a rdfs:Class ;
+lv2:FunctionPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:UtilityPlugin ;
rdfs:label "Function" .
-lv2:ConstantPlugin a rdfs:Class ;
+lv2:ConstantPlugin a rdfs:Class , owl:Class ;
rdfs:subClassOf lv2:GeneratorPlugin ;
rdfs:label "Constant" .
diff --git a/core.lv2/manifest.ttl b/core.lv2/manifest.ttl
index 454a0c5..c4f134d 100644
--- a/core.lv2/manifest.ttl
+++ b/core.lv2/manifest.ttl
@@ -1,8 +1,32 @@
-@prefix lv2: <http://lv2plug.in/ns/lv2core#>.
-@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
+@prefix doap: <http://usefulinc.com/ns/doap#> .
+@prefix foaf: <http://xmlns.com/foaf/0.1/> .
+@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
+@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
<http://lv2plug.in/ns/lv2core>
- a lv2:Specification ;
+ a doap:Project , lv2:Specification ;
lv2:minorVersion 3 ;
lv2:microVersion 2 ;
- rdfs:seeAlso <lv2.ttl> .
+ rdfs:seeAlso <lv2.ttl> ;
+ doap:license <http://usefulinc.com/doap/licenses/mit> ;
+ doap:name "LV2" ;
+ doap:homepage <http://lv2plug.in> ;
+ doap:created "2004-04-21" ;
+ doap:shortdesc "An audio plugin interface specification" ;
+ doap:programming-language "C" ;
+ doap:release [
+ doap:revision "3.2" ;
+ doap:created "2011-03-17"
+ ] ;
+ doap:maintainer [
+ a foaf:Person ;
+ foaf:name "Steve Harris" ;
+ foaf:homepage <http://plugin.org.uk/> ;
+ rdfs:seeAlso <http://plugin.org.uk/swh.xrdf>
+ ] , [
+ a foaf:Person ;
+ foaf:name "David Robillard" ;
+ foaf:homepage <http://drobilla.net/> ;
+ rdfs:seeAlso <http://drobilla.net/drobilla.rdf>
+ ] .
+