From f569bbc2a1d9e817030611c1d371e75ee7f00c63 Mon Sep 17 00:00:00 2001 From: Tpt Date: Sun, 2 Aug 2020 00:05:05 +0200 Subject: [PATCH] Run w3c SPARQL SERVICE testsuite --- testsuite/tests/sparql.rs | 139 +++++++++++++++++++------------------- 1 file changed, 68 insertions(+), 71 deletions(-) diff --git a/testsuite/tests/sparql.rs b/testsuite/tests/sparql.rs index bfcbd52f..77704447 100644 --- a/testsuite/tests/sparql.rs +++ b/testsuite/tests/sparql.rs @@ -2,8 +2,8 @@ use anyhow::Result; use oxigraph_testsuite::manifest::TestManifest; use oxigraph_testsuite::sparql_evaluator::evaluate_sparql_tests; -fn run_testsuite(manifest_urls: Vec<&str>, ignored_tests: Vec<&str>) -> Result<()> { - let manifest = TestManifest::new(manifest_urls); +fn run_testsuite(manifest_url: &str, ignored_tests: Vec<&str>) -> Result<()> { + let manifest = TestManifest::new(vec![manifest_url]); let results = evaluate_sparql_tests(manifest)?; let mut errors = Vec::default(); @@ -20,41 +20,31 @@ fn run_testsuite(manifest_urls: Vec<&str>, ignored_tests: Vec<&str>) -> Result<( } #[test] -fn sparql10_w3c_query_evaluation_testsuite() -> Result<()> { - let manifest_urls = vec![ +fn sparql10_w3c_query_syntax_testsuite() -> Result<()> { + run_testsuite( "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/manifest-syntax.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/algebra/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/ask/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/basic/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/bnode-coreference/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/boolean-effective-value/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/bound/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/cast/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/construct/manifest.ttl", - //TODO FROM and FROM NAMED "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/construct/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/distinct/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-builtin/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-equals/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-ops/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/graph/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/i18n/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/open-world/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/optional/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/optional-filter/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/reduced/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/regex/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/solution-seq/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/sort/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/triple-match/manifest.ttl", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/type-promotion/manifest.ttl", - ]; - - let test_blacklist = vec![ - //Bad SPARQL query that should be rejected by the parser - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql4/manifest#syn-bad-38", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql4/manifest#syn-bad-34", - "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql3/manifest#syn-bad-26", + vec![ + //Bad SPARQL query that should be rejected by the parser + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql4/manifest#syn-bad-38", + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql4/manifest#syn-bad-34", + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql3/manifest#syn-bad-26", + ], + ) +} +#[test] +fn sparql10_w3c_query_evaluation_testsuite() -> Result<()> { + run_testsuite("http://www.w3.org/2001/sw/DataAccess/tests/data-r2/manifest-evaluation.ttl", vec![ + // FROM and FROM name support that is missing + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/dataset/manifest#dawg-dataset-01", + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/dataset/manifest#dawg-dataset-03", + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/dataset/manifest#dawg-dataset-05", + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/dataset/manifest#dawg-dataset-06", + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/dataset/manifest#dawg-dataset-07", + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/dataset/manifest#dawg-dataset-08", + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/dataset/manifest#dawg-dataset-11", + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/dataset/manifest#dawg-dataset-11", + "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/dataset/manifest#dawg-dataset-12b", //Multiple writing of the same xsd:integer. Our system does strong normalization. "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/distinct/manifest#distinct-1", "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/distinct/manifest#distinct-9", @@ -81,45 +71,52 @@ fn sparql10_w3c_query_evaluation_testsuite() -> Result<()> { "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/open-world/manifest#date-2", // We choose to simplify first the nested group patterns in OPTIONAL "http://www.w3.org/2001/sw/DataAccess/tests/data-r2/optional-filter/manifest#dawg-optional-filter-005-not-simplified" - ]; - - run_testsuite(manifest_urls, test_blacklist) + ]) } #[test] fn sparql11_query_w3c_evaluation_testsuite() -> Result<()> { - let manifest_urls = - vec!["http://www.w3.org/2009/sparql/docs/tests/data-sparql11/manifest-sparql11-query.ttl"]; - - let test_blacklist = vec![ - //Bad SPARQL query that should be rejected by the parser - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg08", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg09", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg10", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg11", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg12", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/grouping/manifest#group07", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/grouping/manifest#group06", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/grouping/manifest#group07", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_43", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_44", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_45", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_60", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_61a", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_62a", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_65", - // SPARQL 1.1 JSON query results deserialization is not implemented yet - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg-empty-group-count-1", - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg-empty-group-count-2", - // FROM support - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/construct/manifest#constructwhere04", - //BNODE() scope is currently wrong - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/functions/manifest#bnode01", - //Property path with unbound graph name are not supported yet - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/property-path/manifest#pp35", - //SERVICE name from a BGP - "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/service/manifest#service5" - ]; + run_testsuite( + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/manifest-sparql11-query.ttl", + vec![ + //Bad SPARQL query that should be rejected by the parser + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg08", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg09", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg10", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg11", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg12", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/grouping/manifest#group07", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/grouping/manifest#group06", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/grouping/manifest#group07", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_43", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_44", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_45", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_60", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_61a", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_62a", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-query/manifest#test_65", + // SPARQL 1.1 JSON query results deserialization is not implemented yet + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg-empty-group-count-1", + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/aggregates/manifest#agg-empty-group-count-2", + // FROM support + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/construct/manifest#constructwhere04", + //BNODE() scope is currently wrong + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/functions/manifest#bnode01", + //Property path with unbound graph name are not supported yet + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/property-path/manifest#pp35", + //SERVICE name from a BGP + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/service/manifest#service5" + ], + ) +} - run_testsuite(manifest_urls, test_blacklist) +#[test] +fn sparql11_federation_w3c_evaluation_testsuite() -> Result<()> { + run_testsuite( + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/manifest-sparql11-fed.ttl", + vec![ + // Problem during service evaluation order + "http://www.w3.org/2009/sparql/docs/tests/data-sparql11/service/manifest#service5", + ], + ) }