diff --git a/lib/src/sparql/eval.rs b/lib/src/sparql/eval.rs index 330d5d71..4fea9b78 100644 --- a/lib/src/sparql/eval.rs +++ b/lib/src/sparql/eval.rs @@ -2731,16 +2731,20 @@ impl + 'static> Iterator for De Ok(tuple) => tuple, Err(error) => return Some(Err(error)), }; - for subject in tuple.iter() { - if let Some(subject) = subject { - self.quads = Box::new(self.eval.dataset.encoded_quads_for_pattern( + let eval = self.eval.clone(); + self.quads = Box::new(tuple.into_iter().flatten().flat_map(move |subject| { + eval.dataset + .encoded_quads_for_pattern( Some(subject), None, None, - None, - )); - } - } + Some(EncodedTerm::DefaultGraph), + ) + .chain( + eval.dataset + .encoded_quads_for_pattern(Some(subject), None, None, None), + ) + })); } } } diff --git a/testsuite/oxigraph-tests/sparql/describe.rq b/testsuite/oxigraph-tests/sparql/describe.rq new file mode 100644 index 00000000..9062944a --- /dev/null +++ b/testsuite/oxigraph-tests/sparql/describe.rq @@ -0,0 +1 @@ +DESCRIBE \ No newline at end of file diff --git a/testsuite/oxigraph-tests/sparql/describe_input.ttl b/testsuite/oxigraph-tests/sparql/describe_input.ttl new file mode 100644 index 00000000..f8dce4f7 --- /dev/null +++ b/testsuite/oxigraph-tests/sparql/describe_input.ttl @@ -0,0 +1,9 @@ +PREFIX schema: + + a schema:Person ; + schema:name "test"@en ; + schema:parent ; + schema:child [ a schema:Person ] . + + a schema:Person ; + schema:child . \ No newline at end of file diff --git a/testsuite/oxigraph-tests/sparql/describe_output.ttl b/testsuite/oxigraph-tests/sparql/describe_output.ttl new file mode 100644 index 00000000..2c9ca3c5 --- /dev/null +++ b/testsuite/oxigraph-tests/sparql/describe_output.ttl @@ -0,0 +1,6 @@ +PREFIX schema: + + a schema:Person ; + schema:name "test"@en ; + schema:parent ; + schema:child [] . diff --git a/testsuite/oxigraph-tests/sparql/describe_where.rq b/testsuite/oxigraph-tests/sparql/describe_where.rq new file mode 100644 index 00000000..1bc420fb --- /dev/null +++ b/testsuite/oxigraph-tests/sparql/describe_where.rq @@ -0,0 +1 @@ +DESCRIBE ?s WHERE { ?s "test"@en } \ No newline at end of file diff --git a/testsuite/oxigraph-tests/sparql/manifest.ttl b/testsuite/oxigraph-tests/sparql/manifest.ttl index 76dd6914..3f7a94c1 100644 --- a/testsuite/oxigraph-tests/sparql/manifest.ttl +++ b/testsuite/oxigraph-tests/sparql/manifest.ttl @@ -8,9 +8,25 @@ rdfs:label "Oxigraph SPARQL tests" ; mf:entries ( + :describe + :describe_where :group_concat_with_null ) . +:describe rdf:type mf:QueryEvaluationTest ; + mf:name "Simple DESCRIBE request" ; + mf:action + [ qt:query ; + qt:data ] ; + mf:result . + +:describe rdf:type mf:QueryEvaluationTest ; + mf:name "Simple DESCRIBE request" ; + mf:action + [ qt:query ; + qt:data ] ; + mf:result . + :group_concat_with_null rdf:type mf:QueryEvaluationTest ; mf:name "GROUP_CONCAT with NULL" ; rdfs:comment "GROUP_CONCAT should ignore null values" ;