Julian Dolby created JENA-1633:
----------------------------------

             Summary: Seeing incorrect answers to a specific SPARQL 1.1 MINUS 
query with some datasets
                 Key: JENA-1633
                 URL: https://issues.apache.org/jira/browse/JENA-1633
             Project: Apache Jena
          Issue Type: Bug
          Components: Jena
    Affects Versions: Jena 3.9.0, Jena 3.4.0
            Reporter: Julian Dolby


 We appear to be seeing incorrect answers when the following query is
applied to some datasets but not others:

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?musician ?band WHERE {
  ?musician foaf:name ?name .
  OPTIONAL {
   ?musician foaf:member ?band .
  }
  MINUS {
     ?x foaf:homepage "some bad page" .
     OPTIONAL {
       ?x foaf:member ?band .
     }
  }
}

We run that query on the following data set using Jena 3.9.0:

<http://www.w3.org/2001/XMLSchema#string> <http://xmlns.com/foaf/0.1/name> 
<http://synthetic/0> .
<http://www.w3.org/2001/XMLSchema#string> 
<http://www.w3.org/2001/XMLSchema#boolean> "some bad page" .
<http://www.w3.org/2001/XMLSchema#string> 
<http://www.w3.org/2001/XMLSchema#boolean> "num1"^^<http://any/number> .
<http://www.w3.org/2001/XMLSchema#string> <http://synthetic/0> 
<http://www.w3.org/2001/XMLSchema#boolean> .
<http://www.w3.org/2001/XMLSchema#decimal> <http://xmlns.com/foaf/0.1/homepage> 
"some bad page" .

and the result is empty.  This is surely wrong because the first
triple of the dataset matches the first triple in the query, and
nothing matches the optional part, indeed, there are no foaf:member
triples at all.  Given that, the minus part cannot possibly match
because ?band is unbound and hence the dom() relations of the two
parts must be disjoint.  So surely there should be one result?

We run this test using the following simple driver program:
 
public class JenaRunner {
    
    public static void main(String[] args) throws MalformedURLException, 
IOException {
        Query ast = JenaUtil.parse(args[0]);
        Dataset dataset = RDFDataMgr.loadDataset(args[1]);
        QueryExecution exec = QueryExecutionFactory.create(ast, dataset);
        ResultSet results = exec.execSelect();
        ResultSetFormatter.output(
            System.out, 
            results, 
            ResultsFormat.FMT_RDF_TURTLE);

    }
}

This problem is possibly quite subtle, since we do get correct results
for some other datasets like the following:

<http://synthetic/0> <http://synthetic/0> <http://synthetic/2> .
<http://synthetic/3> <http://www.w3.org/2001/XMLSchema#boolean> 
"lit0"^^<http://any/iri> .
<http://xmlns.com/foaf/0.1/name> <http://synthetic/3> "lit0"^^<http://any/iri> .
_:BX5FX3Ablank0 <http://xmlns.com/foaf/0.1/name> "num2"^^<http://any/number> .



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to