From 3acc63156da8146d609e3c6b7d0326b224b46be6 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 18 Aug 2008 23:59:18 +0000 Subject: Remove pointless predicates that are duplicates of exist well-known ones. Move patch files closer to LV2. git-svn-id: http://svn.drobilla.net/lad/ingen@1437 a436a847-0d15-0410-975c-d299462d15a1 --- src/libs/serialisation/Parser.cpp | 32 ++++++++++++++++---------------- src/libs/serialisation/Serialiser.cpp | 23 ++++++++++++++++------- 2 files changed, 32 insertions(+), 23 deletions(-) (limited to 'src/libs/serialisation') diff --git a/src/libs/serialisation/Parser.cpp b/src/libs/serialisation/Parser.cpp index 2817766e..cc8b4e4b 100644 --- a/src/libs/serialisation/Parser.cpp +++ b/src/libs/serialisation/Parser.cpp @@ -247,12 +247,12 @@ Parser::parse_patch( Redland::Query query(*world->rdf_world, Glib::ustring( "SELECT DISTINCT ?name ?plugin ?varkey ?varval ?poly WHERE {\n") + subject + " ingen:node ?node .\n" - "?node ingen:symbol ?name ;\n" + "?node lv2:symbol ?name ;\n" " ingen:plugin ?plugin ;\n" " ingen:polyphonic ?poly .\n" - "OPTIONAL { ?node ingen:variable ?variable .\n" - " ?variable ingen:key ?varkey ;\n" - " ingen:value ?varval .\n" + "OPTIONAL { ?node lv2var:variable ?variable .\n" + " ?variable rdf:predicate ?varkey ;\n" + " rdf:value ?varval .\n" " }" "}"); @@ -289,7 +289,7 @@ Parser::parse_patch( "SELECT DISTINCT ?subpatch ?symbol WHERE {\n") + subject + " ingen:node ?subpatch .\n" "?subpatch a ingen:Patch ;\n" - " ingen:symbol ?symbol .\n" + " lv2:symbol ?symbol .\n" "}"); results = query.run(*world->rdf_world, model, base_uri); @@ -315,9 +315,9 @@ Parser::parse_patch( query = Redland::Query(*world->rdf_world, Glib::ustring( "SELECT DISTINCT ?nodename ?portname ?portval WHERE {\n") + subject + " ingen:node ?node .\n" - "?node ingen:symbol ?nodename ;\n" + "?node lv2:symbol ?nodename ;\n" " ingen:port ?port .\n" - "?port ingen:symbol ?portname ;\n" + "?port lv2:symbol ?portname ;\n" " ingen:value ?portval .\n" "FILTER ( datatype(?portval) = xsd:decimal )\n" "}"); @@ -341,13 +341,13 @@ Parser::parse_patch( subject + " ingen:port ?port .\n" "?port a ?type ;\n" " a ?datatype ;\n" - " ingen:symbol ?name .\n" + " lv2:symbol ?name .\n" " FILTER (?type != ?datatype && ((?type = ingen:InputPort) || (?type = ingen:OutputPort)))\n" "OPTIONAL { ?port ingen:value ?portval . \n" " FILTER ( datatype(?portval) = xsd:decimal ) }\n" - "OPTIONAL { ?port ingen:variable ?variable .\n" - " ?variable ingen:key ?varkey ;\n" - " ingen:value ?varval .\n" + "OPTIONAL { ?port lv2var:variable ?variable .\n" + " ?variable rdf:predicate ?varkey ;\n" + " rdf:value ?varval .\n" " }" "}"); @@ -525,9 +525,9 @@ Parser::parse_variables( { Redland::Query query(*world->rdf_world, Glib::ustring( "SELECT DISTINCT ?varkey ?varval WHERE {\n") + - subject + " ingen:variable ?variable .\n" - "?variable ingen:key ?varkey ;\n" - " ingen:value ?varval .\n" + subject + " lv2var:variable ?variable .\n" + "?variable rdf:predicate ?varkey ;\n" + " rdf:value ?varval .\n" "}"); Redland::Query::Results results = query.run(*world->rdf_world, model, base_uri); @@ -541,8 +541,8 @@ Parser::parse_variables( query = Redland::Query(*world->rdf_world, Glib::ustring( "SELECT DISTINCT ?key ?val WHERE {\n") + subject + " ingen:property ?property .\n" - "?property ingen:key ?key ;\n" - " ingen:value ?val .\n" + "?property rdf:predicate ?key ;\n" + " rdf:value ?val .\n" "}"); results = query.run(*world->rdf_world, model, base_uri); diff --git a/src/libs/serialisation/Serialiser.cpp b/src/libs/serialisation/Serialiser.cpp index 5f4c0cbf..2f0d9877 100644 --- a/src/libs/serialisation/Serialiser.cpp +++ b/src/libs/serialisation/Serialiser.cpp @@ -302,9 +302,15 @@ Serialiser::serialise_patch(SharedPtr patch) "rdf:type", Redland::Node(_model->world(), Redland::Node::RESOURCE, "http://drobilla.net/ns/ingen#Patch")); - if (patch->path() != "/") { + GraphObject::Variables::const_iterator s = patch->variables().find("lv2:symbol"); + // If symbol is stored as a variable, write that + if (s != patch->variables().end()) { + _model->add_statement(patch_id, "lv2:symbol", + Redland::Node(_model->world(), Redland::Node::LITERAL, s->second.get_string())); + // Otherwise take the one from our path (if possible) + } else if (patch->path() != "/") { _model->add_statement( - patch_id, "ingen:symbol", + patch_id, "lv2:symbol", Redland::Node(_model->world(), Redland::Node::LITERAL, patch->path().name())); } @@ -379,7 +385,7 @@ Serialiser::serialise_node(SharedPtr node, const Redland::Node& no _model->add_statement( node_id, - "ingen:symbol", + "lv2:symbol", Redland::Node(_model->world(), Redland::Node::LITERAL, node->path().name())); _model->add_statement( @@ -419,8 +425,11 @@ Serialiser::serialise_port(const Port* port, const Redland::Node& port_id) else _model->add_statement(port_id, "rdf:type", Redland::Node(_model->world(), Redland::Node::RESOURCE, "ingen:OutputPort")); + + _model->add_statement(port_id, "lv2:index", + AtomRDF::atom_to_node(_model->world(), Atom((int)port->index()))); - _model->add_statement(port_id, "ingen:symbol", + _model->add_statement(port_id, "lv2:symbol", Redland::Node(_model->world(), Redland::Node::LITERAL, port->path().name())); _model->add_statement(port_id, "rdf:type", @@ -471,9 +480,9 @@ Serialiser::serialise_variables(Redland::Node subject, const GraphObject::Variab const Redland::Node key(_model->world(), Redland::Node::RESOURCE, v->first); const Redland::Node value = AtomRDF::atom_to_node(_model->world(), v->second); if (value) { - _model->add_statement(subject, "ingen:variable", var_id); - _model->add_statement(var_id, "ingen:key", key); - _model->add_statement(var_id, "ingen:value", value); + _model->add_statement(subject, "lv2var:variable", var_id); + _model->add_statement(var_id, "rdf:predicate", key); + _model->add_statement(var_id, "rdf:value", value); } else { cerr << "Warning: can not serialise value: key '" << v->first << "', type " << (int)v->second.type() << endl; -- cgit v1.2.1