I've added the necessary processing to check in the base data and to
calculate the inferred rdfs:member triples.
Code in the latest snapshot build.
Andy
On 15/06/11 19:05, Frank Budinsky wrote:
Hi Andy,
So far - one off list, two on-list and one [email protected] emails
about this, all in less than 4 hours. :-)
Sorry about the extra noise. Looks like Arthur and I were independently
pursuing the same issue.
Would you like to propose a patch? (it'll get done quicker
that way)
See
... pfunction/function/container.java
I'll be on vacation for a few days, starting tomorrow, but I'll try to play
around with it when I get back.
Thanks,
Frank.
Andy Seaborne<[email protected]> wrote on 06/15/2011 12:45:01
PM:
[image removed]
Re: Possible ARQ bug?
Andy Seaborne
to:
jena-users
06/15/2011 12:45 PM
Please respond to jena-users
So far - one off list, two on-list and one [email protected] emails
about this, all in less than 4 hours. :-)
On 15/06/11 16:53, Frank Budinsky wrote:
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>" +
Out of curiousity, why not use a container?
(OK - they aren't nice but then none of the datastructures are nice)
"</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?
There's no reason I can think of why it shouldn't also look for
rdfs:member. Would you like to propose a patch? (it'll get done quicker
that way)
See
... pfunction/function/container.java
(there is a small issue about cardinality of mixed use over rules but
this does not really makes it worse or better)
An idiomatic trick is:
{ ?s ?p ?o . FILTER(?p = rdfs:member) }
and it scales, oddly, because identify optimization happens after
property function spotting.
Andy
Thanks,
Frank