summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2015-04-03 17:10:58 +0000
committerDavid Robillard <d@drobilla.net>2015-04-03 17:10:58 +0000
commite1ea99192e10149e0cac7a93f98fbec20e7cedb2 (patch)
tree97d8d9e63b6d2085c2b49e71fc2183c8058b4533
parentac888fe3cb4a7bdf0f43e9474160e3b525edf774 (diff)
downloadingen-e1ea99192e10149e0cac7a93f98fbec20e7cedb2.tar.gz
ingen-e1ea99192e10149e0cac7a93f98fbec20e7cedb2.tar.bz2
ingen-e1ea99192e10149e0cac7a93f98fbec20e7cedb2.zip
Use lv2:prototype and deprecate ingen:prototype.
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@5652 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r--bundles/ingen.lv2/ingen.ttl84
-rw-r--r--bundles/ingen.lv2/internals.ttl10
-rwxr-xr-xscripts/ingenams2
-rwxr-xr-xscripts/ingenish4
-rw-r--r--src/Parser.cpp32
-rw-r--r--src/Serialiser.cpp2
-rw-r--r--src/client/ClientStore.cpp12
-rw-r--r--src/gui/GraphCanvas.cpp4
-rw-r--r--src/gui/LoadPluginWindow.cpp2
-rw-r--r--src/server/events/CreateBlock.cpp18
-rw-r--r--src/server/events/CreateGraph.cpp8
-rw-r--r--tests/connect_disconnect_node_node.ttl4
-rw-r--r--tests/connect_disconnect_node_patch.ttl4
-rw-r--r--tests/create_delete_node.ttl2
-rw-r--r--tests/disconnect_all_node.ttl4
-rw-r--r--tests/empty.ingen/empty.ttl2
-rw-r--r--tests/empty.ingen/manifest.ttl7
-rw-r--r--tests/get_node.ttl2
-rw-r--r--tests/get_patch.ttl4
-rw-r--r--tests/move_node.ttl2
-rw-r--r--tests/poly.ttl2
21 files changed, 126 insertions, 85 deletions
diff --git a/bundles/ingen.lv2/ingen.ttl b/bundles/ingen.lv2/ingen.ttl
index accc9235..3f0e16f1 100644
--- a/bundles/ingen.lv2/ingen.ttl
+++ b/bundles/ingen.lv2/ingen.ttl
@@ -13,129 +13,143 @@ ingen:
owl:imports <http://lv2plug.in/ns/lv2core> ;
doap:name "Ingen Ontology" ;
rdfs:label "Ingen Ontology" ;
- rdfs:comment """Describes graphs of signal processing blocks which process audio, MIDI, and other signals or messages. With appropriate plugins, these graphs can describe modular synthesizers, effects processors, and other signal processing devices.""" .
+ rdfs:comment "Describes graphs of signal processing blocks which process audio, MIDI, and other signals or messages. With appropriate plugins, these graphs can describe modular synthesizers, effects processors, and other signal processing devices." .
ingen:Plugin
- a owl:Class ;
+ a rdfs:Class ;
rdfs:label "Plugin" ;
rdfs:comment """A class which can be instantiated into a ingen:Block. A plugin has a set of input and output "ports". In practice this class is semantically equivalent to lv2:Plugin, it only exists to allow the ingen ontology to be useful for "plugins" that aren't semantically LV2 plugins. See the LV2 specification for details about the required properties (rdf:type, doap:name, doap:license, and lv2:port). """ .
ingen:Graph
- a owl:Class ;
+ a rdfs:Class ;
rdfs:subClassOf ingen:Plugin ;
rdfs:label "Graph" ;
- rdfs:comment """A collection of Blocks connected together. A Graph can itself be a Block within a parent Graph, and so on.""" .
+ rdfs:comment "A collection of Blocks connected together. A Graph can itself be a Block within a parent Graph, and so on." .
ingen:file
- a owl:DatatypeProperty ;
+ a rdf:Property ,
+ owl:DatatypeProperty ;
rdfs:domain ingen:Graph ;
rdfs:range xsd:anyURI ;
rdfs:label "file" ;
rdfs:comment "The file a Graph was loaded from." .
ingen:canvasX
- a owl:DatatypeProperty ;
+ a rdf:Property ,
+ owl:DatatypeProperty ;
rdfs:range xsd:decimal ;
rdfs:label "canvas X" ;
rdfs:comment "The X coordinate of an item on a canvas." .
ingen:canvasY
- a owl:DatatypeProperty ;
+ a rdf:Property ,
+ owl:DatatypeProperty ;
rdfs:range xsd:decimal ;
rdfs:label "canvas Y" ;
rdfs:comment "The Y coordinate of an item on a canvas." .
ingen:block
- a owl:ObjectProperty ;
+ a rdf:Property ,
+ owl:ObjectProperty ;
rdfs:domain ingen:Graph ;
rdfs:range ingen:Block ;
rdfs:label "block" ;
rdfs:comment "Signifies a graph contains some block." .
ingen:polyphony
- a owl:DatatypeProperty ;
+ a rdf:Property ,
+ owl:DatatypeProperty ;
rdfs:domain ingen:Graph ;
rdfs:range xsd:integer ;
rdfs:label "polyphony" ;
rdfs:comment """The amount of polyphony in a Graph. This defines the number of voices present on all :polyphonic children of this graph. Because a Graph is also a Block, a Graph may have both :polyphony and :polyphonic properties. These specify different things: :polyphony specifies the voice count of the Graph's children, and :polyphonic specifies whether the graph is seen as polyphonic to the Graph's parent.""" .
ingen:sprungLayout
- a owl:DatatypeProperty ;
+ a rdf:Property ,
+ owl:DatatypeProperty ;
rdfs:domain ingen:Graph ;
rdfs:range xsd:boolean ;
rdfs:label "sprung layout" ;
rdfs:comment """Whether or not the graph has a "sprung" force-directed layout.""" .
ingen:value
- a owl:DatatypeProperty ;
+ a rdf:Property ,
+ owl:DatatypeProperty ;
rdfs:domain lv2:Port ;
rdfs:label "value" ;
rdfs:comment "The current value of a port." .
ingen:Internal
- a owl:Class ;
+ a rdfs:Class ;
rdfs:subClassOf ingen:Plugin ;
rdfs:label "Internal" ;
- rdfs:comment "An internal 'plugin'" .
+ rdfs:comment """An internal 'plugin'""" .
ingen:Node
- a owl:Class ;
+ a rdfs:Class ;
rdfs:label "Node" ;
- rdfs:comment """An element of a Graph. A Node always has a valid path and symbol, with the possible exception of the root graph which may not have a symbol depending on context. Ingen uses restricted paths and/or URIs built from valid lv2:symbol components, so the symbol of a Node may be inferred from its URI if no explicit lv2:symbol property is given.""" .
+ rdfs:comment "An element of a Graph. A Node always has a valid path and symbol, with the possible exception of the root graph which may not have a symbol depending on context. Ingen uses restricted paths and/or URIs built from valid lv2:symbol components, so the symbol of a Node may be inferred from its URI if no explicit lv2:symbol property is given." .
ingen:uiEmbedded
- a owl:DatatypeProperty ;
+ a rdf:Property ,
+ owl:DatatypeProperty ;
rdfs:range xsd:boolean ;
rdfs:label "UI embedded" ;
- rdfs:comment "Whether or not the block's GUI is embedded." .
+ rdfs:comment """Whether or not the block's GUI is embedded.""" .
lv2:Port
a rdfs:Class ;
rdfs:subClassOf ingen:Node .
ingen:activity
- a owl:DatatypeProperty ;
+ a rdf:Property ,
+ owl:DatatypeProperty ;
rdfs:domain lv2:Port ;
rdfs:label "activity" ;
- rdfs:comment """Transient activity. This property is used in the protocol to communicate activity at ports, such as MIDI events or audio peaks. It should never be stored in persistent data.""" .
+ rdfs:comment "Transient activity. This property is used in the protocol to communicate activity at ports, such as MIDI events or audio peaks. It should never be stored in persistent data." .
ingen:broadcast
- a owl:DatatypeProperty ;
+ a rdf:Property ,
+ owl:DatatypeProperty ;
rdfs:domain lv2:Port ;
rdfs:range xsd:boolean ;
rdfs:label "broadcast" ;
rdfs:comment """Whether or not the port's value or activity should be broadcast to clients.""" .
ingen:polyphonic
- a owl:DatatypeProperty ;
+ a rdf:Property ,
+ owl:DatatypeProperty ;
rdfs:range xsd:boolean ;
rdfs:label "polyphonic" ;
rdfs:comment """Signifies this node should be replicated when it is part of a polyphonic graph. The amount of polyphony (i.e. the number of voices) is determined by the ingen:polyphony property of the containing graph. This is a boolean property which defines whether the parent can access each voice individually: All nodes within a graph are either polyphonic or not from their parent's perspective. An Node may itself have "internal" polyphony but not be polyphonic according to this property, if those voices are mixed down.""" .
ingen:Block
- a owl:Class ;
+ a rdfs:Class ;
rdfs:subClassOf ingen:Node ,
lv2:PluginBase ;
rdfs:label "Block" ;
rdfs:comment """A signal processing block, which is typically either a plugin instance, or a graph.
-A block MUST have at least one ingen:prototype property which is a subclass of lv2:Plugin. When there are many such properties, an applications SHOULD use the most specific class it understands.""" .
+A block MUST have at least one lv2:prototype property which is a subclass of lv2:Plugin. When there are many such properties, an applications SHOULD use the most specific class it understands.""" .
ingen:enabled
- a owl:DatatypeProperty ;
+ a rdf:Property ,
+ owl:DatatypeProperty ;
rdfs:domain ingen:Block ;
rdfs:range xsd:boolean ;
rdfs:label "enabled" ;
rdfs:comment "Signifies the block is or should be running." .
ingen:prototype
- a owl:ObjectProperty ;
+ a rdf:Property ,
+ owl:ObjectProperty ;
+ owl:deprecated true ;
rdfs:domain ingen:Block ;
rdfs:label "prototype" ;
- rdfs:comment """The object which this block is an instance of, or derived from.""" .
+ rdfs:comment "The object which this block is an instance of, or derived from." .
ingen:Arc
- a owl:Class ;
+ a rdfs:Class ;
rdfs:label "Arc" ;
rdfs:subClassOf [
a owl:Restriction ;
@@ -150,17 +164,19 @@ ingen:Arc
owl:cardinality 1 ;
rdfs:comment "MUST have exactly one head which is a lv2:Port."
] ;
- rdfs:comment """A connection between two ports. Graphs have a set of arcs which define how its component blocks and ports are connected.""" .
+ rdfs:comment "A connection between two ports. Graphs have a set of arcs which define how its component blocks and ports are connected." .
ingen:arc
- a owl:ObjectProperty ;
+ a rdf:Property ,
+ owl:ObjectProperty ;
rdfs:domain ingen:Graph ;
rdfs:range ingen:Arc ;
rdfs:label "arc" ;
rdfs:comment "An arc contained in this graph." .
ingen:tail
- a owl:ObjectProperty ,
+ a rdf:Property ,
+ owl:ObjectProperty ,
owl:FunctionalProperty ;
rdfs:domain ingen:Arc ;
rdfs:range lv2:Port ;
@@ -168,7 +184,8 @@ ingen:tail
rdfs:comment "The source/sending port of this arc" .
ingen:head
- a owl:ObjectProperty ,
+ a rdf:Property ,
+ owl:ObjectProperty ,
owl:FunctionalProperty ;
rdfs:domain ingen:Arc ;
rdfs:range lv2:Port ;
@@ -176,8 +193,9 @@ ingen:head
rdfs:comment "The destination/receiving/sink port of this arc" .
ingen:incidentTo
- a owl:ObjectProperty ,
+ a rdf:Property ,
+ owl:ObjectProperty ,
owl:FunctionalProperty ;
rdfs:domain ingen:Arc ;
rdfs:label "incident to" ;
- rdfs:comment """A special property used to describe any arc incident to a port or block. This is never saved in graph files, but is used in the control protocol to completely disconnect a Block or Port.""" .
+ rdfs:comment "A special property used to describe any arc incident to a port or block. This is never saved in graph files, but is used in the control protocol to completely disconnect a Block or Port." .
diff --git a/bundles/ingen.lv2/internals.ttl b/bundles/ingen.lv2/internals.ttl
index b4e713b3..b95073ec 100644
--- a/bundles/ingen.lv2/internals.ttl
+++ b/bundles/ingen.lv2/internals.ttl
@@ -8,26 +8,26 @@
@prefix xsd: <http://www.w3.org/2001/XMLSchema> .
internals:Controller
- a ingen:Plugin ;
+ a ingen:Internal ;
rdfs:label "Controller" ;
rdfs:comment """Outputs the value of a specific MIDI control as a signal. The output value will be scaled to be between the range specified by the minimum and maximum controls.""" .
internals:Trigger
- a ingen:Plugin ;
+ a ingen:Internal ;
rdfs:label "Trigger" ;
rdfs:comment """Outputs a gate, trigger, and velocity signal whenever the specified note is received. This is particularly useful for building percussive instruments.""" .
internals:Note
- a ingen:Plugin ;
+ a ingen:Internal ;
rdfs:label "Note" ;
rdfs:comment """Outputs the attributes of a note as signals. Typically the frequency output controls an oscillator and the gate and trigger control an envelope. This plugin is special because it is internally aware of polyphony and controls voice allocation.""" .
internals:Time
- a ingen:Plugin ;
+ a ingen:Internal ;
rdfs:label "Time" ;
rdfs:comment """Emits time and transport information like tempo, time signature, and speed. The emitted events are in the standard LV2 format expected by transport-aware LV2 plugins.""" .
internals:Delay
- a ingen:Plugin ;
+ a ingen:Internal ;
rdfs:label "Delay" ;
rdfs:comment """Special internal delay block. In theory, this block can be used for sample-accurate delay loops since Ingen can specially handle this case unlike a generic LV2 plugin. However, this is not currently implemented.""" . \ No newline at end of file
diff --git a/scripts/ingenams b/scripts/ingenams
index 4a6a048c..d828d917 100755
--- a/scripts/ingenams
+++ b/scripts/ingenams
@@ -38,7 +38,7 @@ class World:
self.mod_prototypes[self.mod_sym(mod_id)] = plugin_uri
self.server.put('/' + self.mod_sym(mod_id),
('\t\ta ingen:Block ;\n'
- + 'ingen:prototype <%s> ;\n' % plugin_uri
+ + 'lv2:prototype <%s> ;\n' % plugin_uri
+ 'ingen:canvasX %f ;\n' % x
+ 'ingen:canvasY %f' % y).replace('\n', '\n\t\t'))
diff --git a/scripts/ingenish b/scripts/ingenish
index b5daf186..0fa76768 100755
--- a/scripts/ingenish
+++ b/scripts/ingenish
@@ -54,8 +54,8 @@ Example:
ingenish put /left_in 'a lv2:InputPort ; a lv2:AudioPort'
ingenish put /left_out 'a lv2:OutputPort ; a lv2:AudioPort'
- ingenish put /tone 'a ingen:Block ; ingen:prototype <http://drobilla.net/plugins/mda/Shepard>'
- ingenish put /combo 'a ingen:Block ; ingen:prototype <http://drobilla.net/plugins/mda/Combo>'
+ ingenish put /tone 'a ingen:Block ; lv2:prototype <http://drobilla.net/plugins/mda/Shepard>'
+ ingenish put /combo 'a ingen:Block ; lv2:prototype <http://drobilla.net/plugins/mda/Combo>'
ingenish connect /left_in /tone/left_in
ingenish connect /tone/left_out /combo/left_in
ingenish connect /combo/left_out /left_out
diff --git a/src/Parser.cpp b/src/Parser.cpp
index 30de26ba..7df71aa3 100644
--- a/src/Parser.cpp
+++ b/src/Parser.cpp
@@ -276,31 +276,37 @@ parse_block(Ingen::World* world,
{
const URIs& uris = world->uris();
- const Sord::URI ingen_prototype(*world->rdf_world(), uris.ingen_prototype);
- const Sord::Node nil;
-
- Sord::Iter i = model.find(subject, ingen_prototype, nil);
- if (i.end() || i.get_object().type() != Sord::Node::URI) {
- if (!i.end()) {
- std::cerr << "type: " << i.get_object().type() << std::endl;
+ // Try lv2:prototype and old ingen:prototype for backwards compatibility
+ const Sord::URI prototype_predicates[] = {
+ Sord::URI(*world->rdf_world(), uris.lv2_prototype),
+ Sord::URI(*world->rdf_world(), uris.ingen_prototype)
+ };
+
+ std::string type_uri;
+ for (const Sord::URI& prototype : prototype_predicates) {
+ Sord::Iter i = model.find(subject, prototype, Sord::Node());
+ if (!i.end() && i.get_object().type() == Sord::Node::URI) {
+ type_uri = relative_uri(base_uri,
+ i.get_object().to_string(),
+ false);
+ break;
}
+ }
+
+ if (type_uri.empty()) {
world->log().error(
- fmt("Block %1% (%2%) missing mandatory ingen:prototype\n") %
+ fmt("Block %1% (%2%) missing mandatory lv2:prototype\n") %
subject.to_string() % path);
return boost::optional<Raul::Path>();
}
- const std::string type_uri = relative_uri(base_uri,
- i.get_object().to_string(),
- false);
-
if (!serd_uri_string_has_scheme((const uint8_t*)type_uri.c_str())) {
SerdURI base_uri_parts;
serd_uri_parse((const uint8_t*)base_uri.c_str(), &base_uri_parts);
SerdURI ignored;
SerdNode sub_uri = serd_node_new_uri_from_string(
- i.get_object().to_u_string(),
+ (const uint8_t*)type_uri.c_str(),
&base_uri_parts,
&ignored);
diff --git a/src/Serialiser.cpp b/src/Serialiser.cpp
index 2114cc00..91fd5e75 100644
--- a/src/Serialiser.cpp
+++ b/src/Serialiser.cpp
@@ -409,7 +409,7 @@ Serialiser::Impl::serialise_block(SPtr<const Node> block,
Sord::URI(_model->world(), uris.rdf_type),
Sord::URI(_model->world(), uris.ingen_Block));
_model->add_statement(block_id,
- Sord::URI(_model->world(), uris.ingen_prototype),
+ Sord::URI(_model->world(), uris.lv2_prototype),
class_id);
const Node::Properties props = block->properties(Resource::Graph::EXTERNAL);
diff --git a/src/client/ClientStore.cpp b/src/client/ClientStore.cpp
index a61d511a..a260cb07 100644
--- a/src/client/ClientStore.cpp
+++ b/src/client/ClientStore.cpp
@@ -280,7 +280,11 @@ ClientStore::put(const Raul::URI& uri,
model->set_properties(properties);
add_object(model);
} else if (is_block) {
- const Iterator p = properties.find(_uris.ingen_prototype);
+ Iterator p = properties.find(_uris.lv2_prototype);
+ if (p == properties.end()) {
+ p = properties.find(_uris.ingen_prototype);
+ }
+
SPtr<PluginModel> plug;
if (p->second.is_valid() && p->second.type() == _uris.forge.URI) {
if (!(plug = _plugin(Raul::URI(p->second.ptr<char>())))) {
@@ -297,8 +301,7 @@ ClientStore::put(const Raul::URI& uri,
bm->set_properties(properties);
add_object(bm);
} else {
- _log.warn(fmt("Block %1% has no prototype\n")
- % path.c_str());
+ _log.warn(fmt("Block %1% has no prototype\n") % path.c_str());
}
} else if (is_port) {
PortModel::Direction pdir = (is_output)
@@ -314,8 +317,7 @@ ClientStore::put(const Raul::URI& uri,
p->set_properties(properties);
add_object(p);
} else {
- _log.warn(fmt("Ignoring object %1% with unknown type\n")
- % path.c_str());
+ _log.warn(fmt("Ignoring %1% of unknown type\n") % path.c_str());
}
}
diff --git a/src/gui/GraphCanvas.cpp b/src/gui/GraphCanvas.cpp
index c3b8b937..f07f1d5b 100644
--- a/src/gui/GraphCanvas.cpp
+++ b/src/gui/GraphCanvas.cpp
@@ -683,7 +683,7 @@ GraphCanvas::paste()
const Raul::URI& old_uri = Node::path_to_uri(old_path);
const Raul::Path& new_path = avoider.map_path(parent.child(node->path()));
- Node::Properties props{{uris.ingen_prototype,
+ Node::Properties props{{uris.lv2_prototype,
_app.forge().alloc_uri(old_uri)}};
// Set the same types
@@ -789,7 +789,7 @@ GraphCanvas::load_plugin(WPtr<PluginModel> weak_plugin)
Node::Properties props = get_initial_data();
props.insert(make_pair(uris.rdf_type,
Resource::Property(uris.ingen_Block)));
- props.insert(make_pair(uris.ingen_prototype,
+ props.insert(make_pair(uris.lv2_prototype,
uris.forge.alloc_uri(plugin->uri())));
_app.interface()->put(Node::path_to_uri(path), props);
}
diff --git a/src/gui/LoadPluginWindow.cpp b/src/gui/LoadPluginWindow.cpp
index fd8a8868..9d644641 100644
--- a/src/gui/LoadPluginWindow.cpp
+++ b/src/gui/LoadPluginWindow.cpp
@@ -400,7 +400,7 @@ LoadPluginWindow::load_plugin(const Gtk::TreeModel::iterator& iter)
Resource::Properties props = _initial_data;
props.insert(make_pair(uris.rdf_type,
Resource::Property(uris.ingen_Block)));
- props.insert(make_pair(uris.ingen_prototype,
+ props.insert(make_pair(uris.lv2_prototype,
_app->forge().alloc_uri(plugin->uri())));
props.insert(make_pair(uris.ingen_polyphonic,
_app->forge().make(polyphonic)));
diff --git a/src/server/events/CreateBlock.cpp b/src/server/events/CreateBlock.cpp
index e14a3356..3ea009a4 100644
--- a/src/server/events/CreateBlock.cpp
+++ b/src/server/events/CreateBlock.cpp
@@ -69,9 +69,20 @@ CreateBlock::pre_process()
return Event::pre_process_done(Status::PARENT_NOT_FOUND, _path.parent());
}
- // Get prototype URI
- const iterator t = _properties.find(uris.ingen_prototype);
+ // Map old ingen:prototype to new lv2:prototype
+ auto range = _properties.equal_range(uris.ingen_prototype);
+ for (auto i = range.first; i != range.second;) {
+ const auto& value = i->second;
+ auto next = i;
+ next = _properties.erase(i);
+ _properties.insert(std::make_pair(uris.lv2_prototype, i->second));
+ i = next;
+ }
+
+ // Get prototype
+ iterator t = _properties.find(uris.lv2_prototype);
if (t == _properties.end() || t->second.type() != uris.forge.URI) {
+ // Missing/invalid prototype
return Event::pre_process_done(Status::BAD_REQUEST);
}
@@ -98,7 +109,8 @@ CreateBlock::pre_process()
/* Replace prototype with the ancestor's. This is less informative,
but the client expects an actual LV2 plugin as prototype. */
_properties.erase(uris.ingen_prototype);
- _properties.insert(std::make_pair(uris.ingen_prototype,
+ _properties.erase(uris.lv2_prototype);
+ _properties.insert(std::make_pair(uris.lv2_prototype,
uris.forge.alloc_uri(ancestor->plugin()->uri())));
} else {
// Prototype is a plugin
diff --git a/src/server/events/CreateGraph.cpp b/src/server/events/CreateGraph.cpp
index 06445a6b..b9661a13 100644
--- a/src/server/events/CreateGraph.cpp
+++ b/src/server/events/CreateGraph.cpp
@@ -76,8 +76,12 @@ CreateGraph::pre_process()
const Raul::Symbol symbol((_path.is_root()) ? "root" : _path.symbol());
- // Create graph based on prototype
- const iterator t = _properties.find(uris.ingen_prototype);
+ // Get graph prototype
+ iterator t = _properties.find(uris.lv2_prototype);
+ if (t == _properties.end()) {
+ t = _properties.find(uris.lv2_prototype);
+ }
+
if (t != _properties.end() &&
Raul::URI::is_valid(t->second.ptr<char>()) &&
Node::uri_is_path(Raul::URI(t->second.ptr<char>()))) {
diff --git a/tests/connect_disconnect_node_node.ttl b/tests/connect_disconnect_node_node.ttl
index 33fe14c1..9bf91ec8 100644
--- a/tests/connect_disconnect_node_node.ttl
+++ b/tests/connect_disconnect_node_node.ttl
@@ -7,7 +7,7 @@
patch:subject <ingen:/root/node1> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://drobilla.net/plugins/mda/Shepard>
+ lv2:prototype <http://drobilla.net/plugins/mda/Shepard>
] .
<msg1>
@@ -15,7 +15,7 @@
patch:subject <ingen:/root/node2> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://drobilla.net/plugins/mda/Shepard>
+ lv2:prototype <http://drobilla.net/plugins/mda/Shepard>
] .
<msg2>
diff --git a/tests/connect_disconnect_node_patch.ttl b/tests/connect_disconnect_node_patch.ttl
index 1bfec45a..0c740fe8 100644
--- a/tests/connect_disconnect_node_patch.ttl
+++ b/tests/connect_disconnect_node_patch.ttl
@@ -8,7 +8,7 @@
patch:subject <ingen:/root/amp> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://lv2plug.in/plugins/eg-amp>
+ lv2:prototype <http://lv2plug.in/plugins/eg-amp>
] .
<msg1>
@@ -16,7 +16,7 @@
patch:subject <ingen:/root/sampler> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://lv2plug.in/plugins/eg-sampler>
+ lv2:prototype <http://lv2plug.in/plugins/eg-sampler>
] .
<msg2>
diff --git a/tests/create_delete_node.ttl b/tests/create_delete_node.ttl
index 2f504687..1b6cac09 100644
--- a/tests/create_delete_node.ttl
+++ b/tests/create_delete_node.ttl
@@ -7,7 +7,7 @@
patch:subject <ingen:/root/node> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://drobilla.net/plugins/mda/Shepard>
+ lv2:prototype <http://drobilla.net/plugins/mda/Shepard>
] .
<msg1>
diff --git a/tests/disconnect_all_node.ttl b/tests/disconnect_all_node.ttl
index af4abbd2..852be608 100644
--- a/tests/disconnect_all_node.ttl
+++ b/tests/disconnect_all_node.ttl
@@ -7,7 +7,7 @@
patch:subject <ingen:/root/node1> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://drobilla.net/plugins/mda/Shepard>
+ lv2:prototype <http://drobilla.net/plugins/mda/Shepard>
] .
<msg1>
@@ -15,7 +15,7 @@
patch:subject <ingen:/root/node2> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://drobilla.net/plugins/mda/Shepard>
+ lv2:prototype <http://drobilla.net/plugins/mda/Shepard>
] .
<msg2>
diff --git a/tests/empty.ingen/empty.ttl b/tests/empty.ingen/empty.ttl
index 95f60157..aaaf6087 100644
--- a/tests/empty.ingen/empty.ttl
+++ b/tests/empty.ingen/empty.ttl
@@ -37,5 +37,5 @@
<control_out> ;
lv2:symbol "empty" ;
doap:name "empty" ;
- a ingen:Patch ,
+ a ingen:Graph ,
lv2:Plugin .
diff --git a/tests/empty.ingen/manifest.ttl b/tests/empty.ingen/manifest.ttl
index 5aec4db2..0bd4224e 100644
--- a/tests/empty.ingen/manifest.ttl
+++ b/tests/empty.ingen/manifest.ttl
@@ -1,17 +1,16 @@
-@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix atom: <http://lv2plug.in/ns/ext/atom#> .
@prefix patch: <http://lv2plug.in/ns/ext/patch#> .
@prefix doap: <http://usefulinc.com/ns/doap#> .
@prefix ingen: <http://drobilla.net/ns/ingen#> .
@prefix lv2: <http://lv2plug.in/ns/lv2core#> .
-@prefix lv2ev: <http://lv2plug.in/ns/ext/event#> .
@prefix midi: <http://lv2plug.in/ns/ext/midi#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
+@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
<empty.ttl>
- lv2:binary <libingen_lv2.so> ;
- a ingen:Patch ,
+ lv2:prototype ingen:GraphPrototype ;
+ a ingen:Graph ,
lv2:Plugin ;
rdfs:seeAlso <empty.ttl> .
diff --git a/tests/get_node.ttl b/tests/get_node.ttl
index feb68074..f024c7d4 100644
--- a/tests/get_node.ttl
+++ b/tests/get_node.ttl
@@ -7,7 +7,7 @@
patch:subject <ingen:/root/node> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://drobilla.net/plugins/mda/Shepard>
+ lv2:prototype <http://drobilla.net/plugins/mda/Shepard>
] .
<msg1>
diff --git a/tests/get_patch.ttl b/tests/get_patch.ttl
index c9ba6c3c..26718173 100644
--- a/tests/get_patch.ttl
+++ b/tests/get_patch.ttl
@@ -14,7 +14,7 @@
patch:subject <ingen:/root/sub/node1> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://drobilla.net/plugins/mda/Shepard>
+ lv2:prototype <http://drobilla.net/plugins/mda/Shepard>
] .
<msg2>
@@ -22,7 +22,7 @@
patch:subject <ingen:/root/sub/node2> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://drobilla.net/plugins/mda/Combo>
+ lv2:prototype <http://drobilla.net/plugins/mda/Combo>
] .
<msg3>
diff --git a/tests/move_node.ttl b/tests/move_node.ttl
index 667f0754..23ee0ebd 100644
--- a/tests/move_node.ttl
+++ b/tests/move_node.ttl
@@ -7,7 +7,7 @@
patch:subject <ingen:/root/node> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://drobilla.net/plugins/mda/Shepard>
+ lv2:prototype <http://drobilla.net/plugins/mda/Shepard>
] .
<msg1>
diff --git a/tests/poly.ttl b/tests/poly.ttl
index 6235dfa9..e81eeda6 100644
--- a/tests/poly.ttl
+++ b/tests/poly.ttl
@@ -7,7 +7,7 @@
patch:subject <ingen:/root/node> ;
patch:body [
a ingen:Block ;
- ingen:prototype <http://drobilla.net/plugins/mda/Shepard>
+ lv2:prototype <http://drobilla.net/plugins/mda/Shepard>
] .
<msg1>