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

Reply via email to