# Dynamic manifest specification for LV2
# Revision 1
#
# Copyright (C) 2008, 2009 Stefano D'Angelo <zanga.mail@gmail.com>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
#    derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

@prefix dman: <http://lv2plug.in/ns/ext/dyn-manifest#> .
@prefix lv2:  <http://lv2plug.in/ns/lv2core#> .
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@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/> .

<http://lv2plug.in/ns/ext/dyn-manifest>
    a doap:Project ;
    a lv2:Specification ;
    doap:license <http://usefulinc.com/doap/licenses/bsd> ;
    doap:name "LV2 Dynamic Manifest" ;
    doap:homepage <http://naspro.atheme.org> ;
    doap:created "2009-06-13" ;
    doap:shortdesc "An LV2-based specification for dynamic data generation." ;
    doap:programming-language "C" ;
    doap:release [
        doap:revision "1" ;
        doap:created "2009-06-13"
    ] ;
    doap:maintainer [
        a foaf:Person ;
        foaf:name "Stefano D'Angelo" ;
    ] .

######################################
## Dynamic manifest generator class ##
######################################

dman:DynManifest a rdfs:Class ;
    rdfs:label   "Dynamic manifest generator" ;
    rdfs:subClassOf [ a owl:Restriction ;
        owl:onProperty rdf:type ;
        owl:hasValue   dman:DynManifest ;
        rdfs:comment   "A DynManifest has rdf:type dman:DynManifest."
    ] , [ a owl:Restriction ;
        owl:onProperty     lv2:binary ;
        owl:minCardinality 1 ;
        rdfs:comment       """A DynManifest has at least 1 lv2:binary.
The binary must be a library with at least the functions described in
lv2_dyn_manifest.h implemented.
""" ] ;
    rdfs:comment """
The class which represents a dynamic manifest generator.

There MUST NOT be any instances of :DynManifest in the generated manifest.

All relative URIs in the generated data MUST be relative to the base path
that would be used to parse a normal LV2 manifest (the bundle path).
""" .

##############
## Features ##
##############

dman:optionalFeature a rdf:Property ;
    rdfs:domain  dman:DynManifest ;
    rdfs:range   lv2:Feature ;
    rdfs:label   "Optional feature" ;
    rdfs:comment """
Signifies that a dynamic manifest generator is able to make use of or provide a
certain feature. If the host supports this feature, it MUST pass its URI and any
additional data to the dynamic manifest generator in the lv2_dyn_manifest_open()
function. The dynamic manifest generator MUST NOT fail because an optional
feature is possibly not supported by the host.""" .

dman:requiredFeature a rdf:Property ;
    rdfs:domain  dman:DynManifest ;
    rdfs:range   lv2:Feature ;
    rdfs:label   "Required feature" ;
    rdfs:comment """
Signifies that a dynamic manifest generator requires a certain feature in order
to function. If the host supports this feature, it MUST pass its URI and any
additional data to the dynamic manifest generator in the lv2_dyn_manifest_open()
function. The dynamic manifest generator MUST fail if a required feature is not
present; hosts SHOULD always check this before attempting to perform futher
operations on the dynamic manifest generator.
""" .