From 7fd4168fe8581e46f4ee35cc182db6220b6eed04 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 6 Jun 2006 20:20:33 +0000 Subject: Moved libslv2 into it's own subdirectory git-svn-id: http://svn.drobilla.net/lad/libslv2@4 a436a847-0d15-0410-975c-d299462d15a1 --- include/lv2.ttl | 326 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 326 insertions(+) create mode 100644 include/lv2.ttl (limited to 'include/lv2.ttl') diff --git a/include/lv2.ttl b/include/lv2.ttl new file mode 100644 index 0000000..47b21ae --- /dev/null +++ b/include/lv2.ttl @@ -0,0 +1,326 @@ +# RDF Schema file for LV2 plugins +# *** PROVISIONAL *** +# +# This document describes the classes and properties that are defined by the +# core LV2 specification. + +@prefix : . +@prefix rdf: . +@prefix rdfs: . +@prefix dc: . + +<> dc:creator "Steve Harris" ; + dc:date "2006-04-26" . + +# +# Classes +# + +:Plugin a rdfs:Class ; + rdfs:label "Plugin" ; + rdfs:comment """ +This is the class that represents an LV2 plugin. + +In order for it to be used by a host it must have at least one occurance of the +following properties: + rdf:type (with object :Plugin) + doap:name (one without language tag) + doap:licence + lv2:port + +This can be determined by the following SPARQL query: + +PREFIX : +PREFIX doap: +SELECT DISTINCT ?uri WHERE { + ?uri a :Plugin ; + doap:name ?name ; + doap:licence ?rights ; + :port ?port . + FILTER( LANG(?name) = "" ) +} +""" . + +:Port a rdfs:Class ; + rdfs:label "Port" ; + rdfs:comment """ +This is the class that represents an LV2 port + +In order for it to be used by a host it must have at least the following +properties: + rdf:type (where object is exactly one of :InputControlRatePort, + :OutputControlRatePort, :InputAudioRatePort or :OututAudioRatePort) + :datatype + :index + :symbol + :name +""" . + +:InputPort a rdfs:Class ; + rdfs:subClassOf :Port . + +:OutputPort a rdfs:Class ; + rdfs:subClassOf :Port . + +:ControlRatePort a rdfs:Class ; + rdfs:subClassOf :Port . + +:AudioRatePort a rdfs:Class ; + rdfs:subClassOf :Port . + +:InputControlRatePort a rdfs:Class ; + rdfs:label "Input control port" ; + rdfs:subClassOf :ControlRatePort ; + rdfs:subClassOf :InputPort ; + rdfs:comment """ +Ports of this type will be connected to a pointer to a single value of the type +defined by the :datatype property. + +Plugins will read values from this pointer during thier run method. +""" . + +:OutputControlRatePort a rdfs:Class ; + rdfs:label "Output control port" ; + rdfs:subClassOf :ControlRatePort ; + rdfs:subClassOf :OutputPort ; + rdfs:comment """ +Ports of this type will be connected to a pointer to a single value of the type +defined by the :datatype property. + +Plugins will write values to this pointer during thier run method. +""" . + +:InputAudioRatePort a rdfs:Class ; + rdfs:label "Input audio port" ; + rdfs:subClassOf :AudioRatePort ; + rdfs:subClassOf :InputPort ; + rdfs:comment """ +Ports of this type will be connected to a an array of values of length +SampleCount and of the type defined by the :datatype property. + +Plugins will read values from this array during their run method. +""" . + +:OutputAudioRatePort a rdfs:Class ; + rdfs:label "Output audio port" ; + rdfs:subClassOf :AudioRatePort ; + rdfs:subClassOf :OutputPort ; + rdfs:comment """ +Ports of this type will be connected to a an array of values of length +SampleCount and of the type defined by the :datatype property. + +Plugins will write values to this array during their run method. +""" . + +:ScalePoint a rdfs:Class ; + rdfs:label "Scale point" ; + rdfs:comment """ +Used to describe interesting values in a Port's range. + +It has two properties neccesary for use, :label and :value. +""" . + +:Property a rdfs:Class ; + rdfs:label "Property" ; + rdfs:comment """ +Used to inform the host of the capabilities of the Plugin. +""" . + +:Hint a rdfs:Class ; + rdfs:label "Hint" ; + rdfs:comment """ +Used to hint to the host various things which can make interacting with the +Port more natural. +""" . + +:HostFeature a rdfs:Class ; + rdfs:label "Host feature" ; + rdfs:comment """ +Used to describe a host feature which plugin may use or require. +""" . + + +# +# Properties +# + +:property a rdf:Property ; + rdfs:domain :Plugin ; + rdfs:range :Property ; + rdfs:label "property" ; + rdfs:comment "Relates Plugins to Properties." . + +:requiredHostFeature a rdf:Property ; + rdfs:domain :Plugin ; + rdfs:range :HostFeature ; + rdfs:label "Required host feature" ; + rdfs:comment """ +Signifies that plugin requires a certain host feature to function. +The plugin will fail to instantiate if a required host feature is not present; +hosts SHOULD always check this before attempting to instantiate a plugin. +""" . + +:hint a rdf:Property ; + rdfs:domain :Port ; + rdfs:range :Hint ; + rdfs:label "hint" ; + rdfs:comment "Relates Ports to Hints." . + +:datatype a rdf:Property ; + rdfs:domain :Port ; + rdfs:range :Datatype ; + rdfs:label "datatype" ; + rdfs:comment """ +Relates a Port to the datatype(s) is can accept. Currently the only specified +datatype is :float, which specfies IEEE-754 32bit floating point values. + +Hosts that do not support a specfied datatype MUST NOT instantiate the plugin. + +If multiple datatypes are specfied the plugin must have some way to distinguish +the values. +""" . + +# FIXME: rdfs:range = xsd:nonNegativeInteger? +:index a rdf:Property ; + rdfs:domain :Port ; + rdfs:label "index" ; + rdfs:comment """ +Specifies the index of the port, passed as an argument to the connect port +function. This number uniqely identifies the port within the plugin. +""" . + +# FIXME: rdfs:range = xsd:NCName? Closest thing xsd: has.. +:symbol a rdf:Property ; + rdfs:domain :Port ; + rdfs:label "symbol" ; + rdfs:comment """ +A short name used to identify the port in an easily machine and human readable way. + +The first character must be one of _, a-z or A-Z and subsequenct characters can +be from _, a-z, A-Z and 0-9. + +No language tag should be used on this property. +""" . + +:name a rdf:Property ; + rdfs:domain :Port ; + rdfs:label "name" ; + rdfs:comment """ +A display name for labeling the Port in a user interface. + +This property is required for Ports, but should not be used by the host for +port identification. The plugin author may change the values of this +property without changing the Plugin URI. +""" . + +:default a rdf:Property ; + rdfs:domain :ControlRatePort ; + rdfs:label "default" ; + rdfs:comment """ +The default value that the host SHOULD set this port to when there is not other +information available. Only meaningful for Ports with a :datatype of :float. +""" . + +:minimum a rdf:Property ; + rdfs:domain :Port ; + rdfs:label "minimum" ; + rdfs:comment """ +A hint to the host for the minimum useful value that the port will use. The +plugin is required to accept all values in the range of :float. +""" . + +:minimum a rdf:Property ; + rdfs:domain :Port ; + rdfs:label "maximum" ; + rdfs:comment """ +A hint to the host for the maximum useful value that the port will use. The +plugin is required to accept all values in the range of :float. +""" . + +:scalePoint a rdf:Property ; + rdfs:domain :Port ; + rdfs:range :ScalePoint ; + rdfs:label "scale point" ; + rdfs:comment "Relates a Port to its ScalePoints." . + + +# +# Instances +# + +:toggled a :Hint ; + rdfs:label "toggled" ; + rdfs:comment """ +Indicates that the data item should be considered a Boolean toggle. Data less +than or equal to zero should be considered `off' or `false,' and data above +zero should be considered `on' or `true.' +""" . + +:sampleRate a :Hint ; + rdfs:label "sample rate" ; + rdfs:comment """ +Indicates that any bounds specified should be interpreted as multiples of the +sample rate. For instance, a frequency range from 0Hz to the Nyquist frequency +(half the sample rate) could be requested by this hint in conjunction with +:minimum 0.0 and :maximum 0.5. Hosts that support bounds at all must support +this hint to retain meaning. +""" . + +:integer a :Hint ; + rdfs:label "integer" ; + rdfs:comment """ +Indicates that a user interface would probably wish to provide a stepped +control taking only integer values. +""" . + +:realtime a :Property ; + rdfs:label "realtime" ; + rdfs:comment """ +Indicates that the plugin has a real-time dependency (e.g. listens to a MIDI +device) and so its output must not be cached or subject to significant latency. +""" . + +:inplaceBroken a :Property ; + rdfs:label "in-place broken" ; + rdfs:comment """ +Indicates that the plugin may cease to work correctly if the host elects to use +the same data location for both input and output (see connect_port()). This +should be avoided as enabling this flag makes it impossible for hosts to use +the plugin to process audio `in-place.' +""" . + +:hardRtCapable a :Property ; + rdfs:label "hard realtime capable" ; + rdfs:comment """ +Indicates that the plugin is capable of running not only in a conventional host +but also in a `hard real-time' environment. To qualify for this the plugin must +satisfy all of the following: + + (1) The plugin must not use malloc(), free() or other heap memory + management within its run() or run_adding() functions. All new + memory used in run() must be managed via the stack. These + restrictions only apply to the run() function. + + (2) The plugin will not attempt to make use of any library + functions with the exceptions of functions in the ANSI standard C + and C maths libraries, which the host is expected to provide. + + (3) The plugin will not access files, devices, pipes, sockets, IPC + or any other mechanism that might result in process or thread + blocking. + + (4) The plugin will take an amount of time to execute a run() or + run_adding() call approximately of form (A+B*SampleCount) where A + and B depend on the machine and host in use. This amount of time + may not depend on input signals or plugin state. The host is left + the responsibility to perform timings to estimate upper bounds for + A and B. +""" . + +# FIXME: = xsd:float? +:float a :Datatype ; + rdfs:label "float" ; + rdfs:comment """ +Represents values conforming to the 32bit IEEE-754 floating point specification. +""" . + -- cgit v1.2.1