instance-var
type: Specification
license: mit
name: LV2 Instance Variables
created: 2008-08-18
maintainer: David Robillard
comment: An extension for setting named/typed variables on an instance of an LV2 Plugin (or anything else). A "variable" is really just a (reified) RDF statement with an implicit subject (e.g. the plugin instance). Variables serve as a portable, network transparent, and serialisable mechanism for clients (e.g. user interfaces, programs) to control any parameter of a running plugin instance. Because variables are 'keyed' by URI (the predicate), future extensions can define variables with specific meanings or restricted/extended types. The value (rdf:value) of a variable may be anything, but hosts or plugins aren't guaranteed to support anything other than simple typed literals. Serialisation and code access to complex variables is considered outside the scope of this extension. Hosts and plugins SHOULD use the following types for appropriate values: RDF Type Data Type xsd:string string xsd:decimal floating point number xsd:integer integer number xsd:boolean boolean value This extension does not currently define a code mechanism for access to variables. A future revision, or a different extension, may. An example of a plugin with several variables: <http://example.org/plugin> a lv2:Plugin ; lv2var:variable [ rdf:predicate <http://example.org/greetingology#Greeting> ; rdf:value "Hello, cruel world." ] , [ rdf:predicate <http://example.org/matheybits#Coeff> ; rdf:value 1.23456 ] , [ rdf:predicate <http://example.org/databits#BigValue> ; rdf:value [ a somext:Something ; someext:foo "Foo?" ; someext:bar "Bar." ; someext:baz 1234.0 ] ] .

LV2 Variable
type: Class
comment: A typed instance variable.
subclass of: Restriction
  comment: Must have exactly one rdf:predicate which is a resource
  on property: predicate
  cardinality: 1
  all values from: Resource
subclass of: Restriction
  comment: Must have exactly one rdf:value (of any type)
  on property: value
  cardinality: 1

Has a Variable
type: ObjectProperty
range: LV2 Variable
comment: Relates an LV2 Variable to some Resource, usually a plugin instance. The domain of this property is not restricted, it may be used for anything. The range is implicitly an lv2var:Variable, the 'a lv2var:Variable' triple is not mandatory.