@prefix lv2: . @prefix owl: . @prefix rdf: . @prefix rdfs: . @prefix units: . @prefix xsd: . a owl:Ontology ; owl:imports ; lv2:documentation """

This vocabulary defines a number of units for use in audio processing.

For example, to say that a gain port's value is in decibels (units:db)

@prefix units: <http://lv2plug.in/ns/extensions/units#> .
@prefix eg:    <http://example.org/> .

eg:plugin lv2:port [
    a            lv2:ControlRateInputPort ;
    lv2:datatype lv2:Float ;
    lv2:index    0 ;
    lv2:symbol   "gain" ;
    lv2:name     "gain" ;
    units:unit   units:db
] .

Using the same form, plugins may also specify one-off units inline, to give better display hints to hosts:

eg:plugin lv2:port [
    a            lv2:ControlRateInputPort ;
    lv2:datatype lv2:Float ;
    lv2:index    0 ;
    lv2:symbol   "frob" ;
    lv2:name     "frob level" ;
    units:unit [
        a            units:Unit ;
        rdfs:label   "frobnication" ;
        units:symbol "fr" ;
        units:render "%f f"
    ]
] .

It is also possible to define conversions between various units, which makes it possible for hosts to automatically and generically convert from a given unit to a desired unit. The units defined in this extension include conversion definitions where it makes sense to do so.

""" . units:Unit a rdfs:Class , owl:Class ; rdfs:label "Unit" ; rdfs:comment "A unit for LV2 port data" . units:unit a rdf:Property , owl:ObjectProperty ; rdfs:domain lv2:Port ; rdfs:range units:Unit ; rdfs:label "unit" ; rdfs:comment "Relates a port to the unit of its data" . units:render a rdf:Property , owl:DatatypeProperty ; rdfs:domain units:Unit ; rdfs:range xsd:string ; rdfs:comment """A printf format string for rendering a value (eg. "%f dB").""" . units:symbol a rdf:Property , owl:DatatypeProperty ; rdfs:domain units:Unit ; rdfs:range xsd:string ; rdfs:comment "The abbreviated symbol for the unit (e.g. dB)." . units:Conversion a rdfs:Class , owl:Class ; rdfs:subClassOf [ a owl:Restriction ; owl:onProperty units:to ; owl:cardinality 1 ; rdfs:comment "A conversion MUST have exactly 1 units:to property." ] ; rdfs:label "Conversion" ; rdfs:comment "A conversion from one unit to another." . units:conversion a rdf:Property , owl:ObjectProperty ; rdfs:domain units:Unit ; rdfs:range units:Conversion ; rdfs:label "conversion" ; rdfs:comment "A conversion from this unit to another." . units:prefixConversion a rdf:Property , owl:ObjectProperty ; rdfs:subPropertyOf units:conversion ; rdfs:domain units:Unit ; rdfs:range units:Conversion ; rdfs:label "prefix conversion" ; rdfs:comment """ A conversion from this unit to the same unit but with a different SI prefix (e.g. Hz to kHz). """ . units:to a rdf:Property , owl:ObjectProperty ; rdfs:domain units:Conversion ; rdfs:range units:Unit ; rdfs:label "conversion target" ; rdfs:comment "The target unit this conversion converts to." . units:factor a rdf:Property , owl:DatatypeProperty ; rdfs:domain units:Conversion ; rdfs:label "conversion factor" ; rdfs:comment """ The factor to multiple the source value by in order to convert to the target unit. """ . units:s a units:Unit ; units:conversion [ units:factor 0.0166666666 ; units:to units:min ] ; rdfs:label "seconds" ; units:prefixConversion [ units:factor 1000 ; units:to units:ms ] ; units:render "%f s" ; units:symbol "s" . units:ms a units:Unit ; rdfs:label "milliseconds" ; units:prefixConversion [ units:factor 0.001 ; units:to units:s ] ; units:render "%f ms" ; units:symbol "ms" . units:min a units:Unit ; units:conversion [ units:factor 60.0 ; units:to units:s ] ; rdfs:label "minutes" ; units:render "%f mins" ; units:symbol "min" . units:bar a units:Unit ; rdfs:label "bars" ; units:render "%f bars" ; units:symbol "bars" . units:beat a units:Unit ; rdfs:label "beats" ; units:render "%f beats" ; units:symbol "beats" . units:frame a units:Unit ; rdfs:label "audio frames" ; units:render "%f frames" ; units:symbol "frames" . units:m a units:Unit ; units:conversion [ units:factor 39.37 ; units:to units:inch ] ; rdfs:label "metres" ; units:prefixConversion [ units:factor 100 ; units:to units:cm ] , [ units:factor 1000 ; units:to units:mm ] , [ units:factor 0.001 ; units:to units:km ] ; units:render "%f m" ; units:symbol "m" . units:cm a units:Unit ; units:conversion [ units:factor 0.3937 ; units:to units:inch ] ; rdfs:label "centimetres" ; units:prefixConversion [ units:factor 0.01 ; units:to units:m ] , [ units:factor 10 ; units:to units:mm ] , [ units:factor 0.00001 ; units:to units:km ] ; units:render "%f cm" ; units:symbol "cm" . units:mm a units:Unit ; units:conversion [ units:factor 0.03937 ; units:to units:inch ] ; rdfs:label "millimetres" ; units:prefixConversion [ units:factor 0.001 ; units:to units:m ] , [ units:factor 0.1 ; units:to units:cm ] , [ units:factor 0.000001 ; units:to units:km ] ; units:render "%f mm" ; units:symbol "mm" . units:km a units:Unit ; units:conversion [ units:factor 0.62138818 ; units:to units:mile ] ; rdfs:label "kilometres" ; units:prefixConversion [ units:factor 1000 ; units:to units:m ] , [ units:factor 100000 ; units:to units:cm ] , [ units:factor 1000000 ; units:to units:mm ] ; units:render "%f km" ; units:symbol "km" . units:inch a units:Unit ; units:conversion [ units:factor 2.54 ; units:to units:cm ] ; rdfs:label "inches" ; units:render """%f\"""" ; units:symbol "in" . units:mile a units:Unit ; units:conversion [ units:factor 1.6093 ; units:to units:km ] ; rdfs:label "miles" ; units:render "%f mi" ; units:symbol "mi" . units:db a units:Unit ; rdfs:label "decibels" ; units:render "%f dB" ; units:symbol "dB" . units:pc a units:Unit ; units:conversion [ units:factor 0.01 ; units:to units:coef ] ; rdfs:label "percent" ; units:render "%f%%" ; units:symbol "%" . units:coef a units:Unit ; units:conversion [ units:factor 100 ; units:to units:pc ] ; rdfs:label "coefficient" ; units:render "* %f" ; units:symbol "" . units:hz a units:Unit ; rdfs:label "hertz" ; units:prefixConversion [ units:factor 0.001 ; units:to units:khz ] , [ units:factor 0.000001 ; units:to units:mhz ] ; units:render "%f Hz" ; units:symbol "Hz" . units:khz a units:Unit ; rdfs:label "kilohertz" ; units:prefixConversion [ units:factor 1000 ; units:to units:hz ] , [ units:factor 0.001 ; units:to units:mhz ] ; units:render "%f kHz" ; units:symbol "kHz" . units:mhz a units:Unit ; rdfs:label "megahertz" ; units:prefixConversion [ units:factor 1000000 ; units:to units:hz ] , [ units:factor 0.001 ; units:to units:khz ] ; units:render "%f MHz" ; units:symbol "MHz" . units:bpm a units:Unit ; rdfs:label "beats per minute" ; units:prefixConversion [ units:factor 0.0166666666 ; units:to units:hz ] ; units:render "%f BPM" ; units:symbol "BPM" . units:oct a units:Unit ; units:conversion [ units:factor 12.0 ; units:to units:semitone12TET ] ; rdfs:label "octaves" ; units:render "%f octaves" ; units:symbol "oct" . units:cent a units:Unit ; units:conversion [ units:factor 0.01 ; units:to units:semitone12TET ] ; rdfs:label "cents" ; units:render "%f ct" ; units:symbol "ct" . units:semitone12TET a units:Unit ; units:conversion [ units:factor 0.083333333 ; units:to units:oct ] ; rdfs:label "semitones" ; units:render "%f semi" ; units:symbol "semi" . units:degree a units:Unit ; rdfs:label "degrees" ; units:render "%f deg" ; units:symbol "deg" . units:midiNote a units:Unit ; rdfs:label "MIDI note" ; units:render "MIDI note %d" ; units:symbol "note" .