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

Reply via email to