Hi,
I'm having a problem querying for rdfs:member predicates. Here is a test
program:
public static void main( String[] args )
{
Dataset dataset = TDBFactory.createDataset();
Model model = dataset.getDefaultModel();
//PropertyFunctionRegistry.get().remove(RDFS.member.getURI()) ;
String xml =
"<?xml version=\"1.0\"?>" +
"<rdf:RDF xmlns:rdf=
\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" " +
" xmlns:rdfs=
\"http://www.w3.org/2000/01/rdf-schema#\">" +
" <rdf:Description rdf:about=
\"http://example.com/query\">" +
" <rdfs:member rdf:resource=
\"http://example.com/bugs/5\" />" +
" <rdfs:member rdf:resource=
\"http://example.com/bugs/4\" />" +
" <rdfs:member rdf:resource=
\"http://example.com/bugs/3\" />" +
" <rdfs:member rdf:resource=
\"http://example.com/bugs/2\" />" +
" <rdfs:member rdf:resource=
\"http://example.com/bugs/1\" />" +
" </rdf:Description>" +
"</rdf:RDF>";
model.read(new ByteArrayInputStream(xml.getBytes()), null);
String queryString =
"PREFIX rdf:
<http://www.w3.org/1999/02/22-rdf-syntax-ns#> " +
"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> "
+
"SELECT ?resource ?member WHERE { " +
" ?resource rdfs:member ?member " +
" } ";
Query query = QueryFactory.create(queryString);
QueryExecution qexec = QueryExecutionFactory.create(query,
dataset);
ResultSet result = qexec.execSelect();
ResultSetFormatter.out(System.out, result, query);
qexec.close();
}
When I run it, I'm getting no results.
If I uncomment this line:
//PropertyFunctionRegistry.get().remove(RDFS.member.getURI()) ;
then it returns the 5 expected results.
It seems that when rdfs:member inferencing is enabled, it no longer matches
concrete rdfs:member predicates. Is that not an ARQ bug?
Thanks,
Frank