|
|
|
#![cfg(test)]
|
|
|
|
|
|
|
|
use anyhow::Result;
|
|
|
|
use oxigraph_testsuite::check_testsuite;
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn sparql10_w3c_query_syntax_testsuite() -> Result<()> {
|
|
|
|
check_testsuite(
|
|
|
|
"https://w3c.github.io/rdf-tests/sparql/sparql10/manifest-syntax.ttl",
|
|
|
|
&[
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/syntax-sparql3/manifest#syn-bad-26", // tokenizer
|
|
|
|
],
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn sparql10_w3c_query_evaluation_testsuite() -> Result<()> {
|
|
|
|
check_testsuite("https://w3c.github.io/rdf-tests/sparql/sparql10/manifest-evaluation.ttl", &[
|
|
|
|
//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",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-builtin/manifest#dawg-str-1",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-builtin/manifest#dawg-str-2",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-equals/manifest#eq-graph-1",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-equals/manifest#eq-graph-2",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/open-world/manifest#open-eq-01",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/open-world/manifest#open-eq-04",
|
|
|
|
//Multiple writing of the same xsd:double. Our system does strong normalization.
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-builtin/manifest#sameTerm",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-builtin/manifest#sameTerm-simple",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-builtin/manifest#sameTerm-eq",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-builtin/manifest#sameTerm-not-eq",
|
|
|
|
//Simple literal vs xsd:string. We apply RDF 1.1
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/distinct/manifest#distinct-2",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/open-world/manifest#open-eq-08",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/open-world/manifest#open-eq-10",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/open-world/manifest#open-eq-11",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/open-world/manifest#open-eq-12",
|
|
|
|
//DATATYPE("foo"@en) returns rdf:langString in RDF 1.1
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/expr-builtin/manifest#dawg-datatype-2",
|
|
|
|
// We use XSD 1.1 equality on dates
|
|
|
|
"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",
|
|
|
|
// This test relies on naive iteration on the input file
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/reduced/manifest#reduced-1",
|
|
|
|
"http://www.w3.org/2001/sw/DataAccess/tests/data-r2/reduced/manifest#reduced-2"
|
|
|
|
])
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn sparql11_query_w3c_evaluation_testsuite() -> Result<()> {
|
|
|
|
check_testsuite(
|
|
|
|
"https://w3c.github.io/rdf-tests/sparql/sparql11/manifest-sparql11-query.ttl",
|
|
|
|
&[
|
|
|
|
//BNODE() scope is currently wrong
|
|
|
|
"http://www.w3.org/2009/sparql/docs/tests/data-sparql11/functions/manifest#bnode01",
|
|
|
|
//SERVICE name from a BGP
|
|
|
|
"http://www.w3.org/2009/sparql/docs/tests/data-sparql11/service/manifest#service5",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn sparql11_federation_w3c_evaluation_testsuite() -> Result<()> {
|
|
|
|
check_testsuite(
|
|
|
|
"https://w3c.github.io/rdf-tests/sparql/sparql11/manifest-sparql11-fed.ttl",
|
|
|
|
&[
|
|
|
|
// Problem during service evaluation order
|
|
|
|
"http://www.w3.org/2009/sparql/docs/tests/data-sparql11/service/manifest#service5",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn sparql11_update_w3c_evaluation_testsuite() -> Result<()> {
|
|
|
|
check_testsuite(
|
|
|
|
"https://w3c.github.io/rdf-tests/sparql/sparql11/manifest-sparql11-update.ttl",
|
|
|
|
&[
|
|
|
|
// We allow multiple INSERT DATA with the same blank nodes
|
|
|
|
"http://www.w3.org/2009/sparql/docs/tests/data-sparql11/syntax-update-1/manifest#test_54",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn sparql11_json_w3c_evaluation_testsuite() -> Result<()> {
|
|
|
|
check_testsuite(
|
|
|
|
"https://w3c.github.io/rdf-tests/sparql/sparql11/json-res/manifest.ttl",
|
|
|
|
&[],
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn sparql11_tsv_w3c_evaluation_testsuite() -> Result<()> {
|
|
|
|
check_testsuite(
|
|
|
|
"https://w3c.github.io/rdf-tests/sparql/sparql11/csv-tsv-res/manifest.ttl",
|
|
|
|
&[
|
|
|
|
// We do not run CSVResultFormatTest tests yet
|
|
|
|
"http://www.w3.org/2009/sparql/docs/tests/data-sparql11/csv-tsv-res/manifest#csv01",
|
|
|
|
"http://www.w3.org/2009/sparql/docs/tests/data-sparql11/csv-tsv-res/manifest#csv02",
|
|
|
|
"http://www.w3.org/2009/sparql/docs/tests/data-sparql11/csv-tsv-res/manifest#csv03",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn sparql_star_syntax_testsuite() -> Result<()> {
|
|
|
|
check_testsuite(
|
|
|
|
"https://w3c.github.io/rdf-star/tests/sparql/syntax/manifest.ttl",
|
|
|
|
&[],
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn sparql_star_eval_testsuite() -> Result<()> {
|
|
|
|
check_testsuite(
|
|
|
|
"https://w3c.github.io/rdf-star/tests/sparql/eval/manifest.ttl",
|
|
|
|
&[],
|
|
|
|
)
|
|
|
|
}
|