it seems that if i write a triple with 3 uris like this:
<uri:foo> <uri:bar> <uri:baz>.
in a SPARQL query, it will return no results, even if such a triple is in
the graph.
pResults: 29a98; not finished
count: 4
pResults: 29af8; not finished
count: 2
pResults: 299d8; not finished
count: 2
pResults: 29ad8; not finished
count: 2
librdf warning URI file:///home/ms216673/rdf/:1 - Variable s was selected
but is unused in the query.
librdf warning URI file:///home/ms216673/rdf/:1 - Variable p was selected
but is unused in the query.
librdf warning URI file:///home/ms216673/rdf/:1 - Variable o was selected
but is unused in the query.
pResults: 29b28; is finished
count: 0
pResults: 29bc8; is finished
count: 0
see attached program: queries 1-4 seem to work
query 5 returns no result, but should return one result with nulls
query 6 returns no result, but should return 2 results.
here is the output of the same queries with Sesame 2.0:
SELECT ?s ?p ?o FROM <uri:context> WHERE { ?foo ?bar ?baz . ?s ?p ?o. }
result: uri:baz uri:foo uri:bar
result: uri:bar uri:baz uri:foo
result: uri:baz uri:foo uri:bar
result: uri:bar uri:baz uri:foo
end results.
SELECT ?s ?p ?o FROM <uri:context> WHERE { <uri:foo> ?bar ?baz . ?s ?p ?o. }
result: uri:baz uri:foo uri:bar
result: uri:bar uri:baz uri:foo
end results.
SELECT ?s ?p ?o FROM <uri:context> WHERE { <uri:foo> <uri:bar> ?baz . ?s
?p ?o. }
result: uri:baz uri:foo uri:bar
result: uri:bar uri:baz uri:foo
end results.
SELECT ?s ?p ?o FROM <uri:context> WHERE { <uri:foo> ?bar <uri:baz> . ?s
?p ?o. }
result: uri:baz uri:foo uri:bar
result: uri:bar uri:baz uri:foo
end results.
SELECT ?s ?p ?o FROM <uri:context> WHERE { <uri:foo> <uri:bar> <uri:baz>. }
result: <null> <null> <null>
end results.
SELECT ?s ?p ?o FROM <uri:context> WHERE { <uri:foo> <uri:bar> <uri:baz>.
?s ?p ?o. }
result: uri:baz uri:foo uri:bar
result: uri:bar uri:baz uri:foo
end results.
oh, and serializing the result of a query does not seem to work either
(see FIXME in attached file).
michael
--
"The fact that Pythonesque is a word in the dictionary shows the extent
to which we failed." -- A Monty Python member (I forgot which) on their
attempt to create comedy that could not be defined.
#include <librdf.h>
void query(librdf_world *pWorld, librdf_model *pModel, unsigned char* query)
{
librdf_query *pQuery = librdf_new_query(pWorld, "sparql", NULL, query, NULL);
librdf_query_results *pResults = librdf_query_execute(pQuery, pModel);
fprintf(stderr, "pResults: %p; %s finished\n", pResults,
librdf_query_results_finished(pResults) ? "is" : "not" );
int count = 0;
while (!librdf_query_results_finished(pResults)) {
++count;
librdf_query_results_next(pResults);
}
fprintf(stderr, "count: %d\n", count);
/* FIXME this does not seem to work...
unsigned char SXML[]
= "http://www.w3.org/TR/2004/WD-rdf-sparql-XMLres-20041221/";
librdf_uri* pSXML = librdf_new_uri(pWorld, SXML);
librdf_query_results_to_file_handle(pResults, stderr, pSXML, NULL);
unsigned char* str = librdf_query_results_to_string(pResults, pSXML, NULL);
*/
}
int main()
{
librdf_world *pWorld = librdf_new_world();
librdf_world_open(pWorld);
librdf_storage *pStorage = librdf_new_storage(pWorld,
// "memory", NULL, "contexts='yes'");
"hashes", NULL, "contexts='yes',hash-type='memory'");
librdf_model *pModel = librdf_new_model(pWorld, pStorage, NULL);
librdf_node *pContext = librdf_new_node_from_uri_string(pWorld,
(const unsigned char*) ("uri:context"));
librdf_node *pFoo = librdf_new_node_from_uri_string(pWorld,
(const unsigned char*) ("uri:foo"));
librdf_node *pBar = librdf_new_node_from_uri_string(pWorld,
(const unsigned char*) ("uri:bar"));
librdf_node *pBaz = librdf_new_node_from_uri_string(pWorld,
(const unsigned char*) ("uri:baz"));
librdf_statement *pStatement =
librdf_new_statement_from_nodes(pWorld, pFoo, pBar, pBaz);
librdf_model_context_add_statement(pModel, pContext, pStatement);
librdf_statement *pStatement2 =
librdf_new_statement_from_nodes(pWorld, pBar, pBaz, pFoo);
librdf_model_context_add_statement(pModel, pContext, pStatement2);
unsigned char query1[] =
"SELECT ?s ?p ?o FROM <uri:context> WHERE { ?foo ?bar ?baz . ?s ?p ?o. }";
unsigned char query2[] =
"SELECT ?s ?p ?o FROM <uri:context> WHERE { <uri:foo> ?bar ?baz . ?s ?p ?o. }";
unsigned char query3[] =
"SELECT ?s ?p ?o FROM <uri:context> WHERE { <uri:foo> <uri:bar> ?baz . ?s ?p ?o. }";
unsigned char query4[] =
"SELECT ?s ?p ?o FROM <uri:context> WHERE { <uri:foo> ?bar <uri:baz> . ?s ?p ?o. }";
unsigned char query5[] =
"SELECT ?s ?p ?o FROM <uri:context> WHERE { <uri:foo> <uri:bar> <uri:baz>. }";
unsigned char query6[] =
"SELECT ?s ?p ?o FROM <uri:context> WHERE { <uri:foo> <uri:bar> <uri:baz>. ?s ?p ?o. }";
query(pWorld, pModel, query1);
query(pWorld, pModel, query2);
query(pWorld, pModel, query3);
query(pWorld, pModel, query4);
query(pWorld, pModel, query5);
query(pWorld, pModel, query6);
return 0;
}
_______________________________________________
redland-dev mailing list
[email protected]
http://lists.librdf.org/mailman/listinfo/redland-dev