Thomas and ASoroka -

Go back to the thread begun on 7/14,[1]  and also read the articles quoted:


If you are starting with RDF/XML or turtle, you have to determine what triples your software is deriving from them. See the reply by Kevin and the subsequent replies of mine. If your software is "skolemizing" the blank nodes, which means turning them into named nodes, then your query "works" -- but different software works differently. You can test this using the test I did in my third post:

     PREFIX bf:   <>
     SELECT ?s ?p ?o
     WHERE {
         ?s bf:providerName ?o .
If you don't see bnodes then the software has skolemized them.

When I turned the RDF/XML into triples which do not have skolemized nodes, the search does not work in that same software, which I believe is for the reasons given in the articles above. I made the files available so others can try the same search. [original BF file]

The latter two were derived from the former using rapper.

Thomas, could you indicate which SPARQL 1.1 spec you are referencing, and the section? Thanks. It looks like predicate paths in 1.1 may resolve this. The main thing is to try some actual queries against actual data. I will do that later today. I will try the search using triples to avoid the issue of skolemizing behind the scenes, and against more than one software package. (Soroka, could you try the triples I provided using Jena? Thanks.)

[1] begins here:

On 8/1/14, 8:52 AM, Thomas Berger wrote:
[log in to unmask]" type="cite">
Hash: SHA1


<>  a bf:Instance,
     bf:publication [
         a bf:Provider ;
         bf:providerDate "1966" ;
         bf:providerName [ a bf:Organization ; bf:label "Hamlyn" ] ;
         bf:providerPlace [ a bf:Place ; bf:label "London" ]
     ] .

The reason is that you cannot step through blank nodes to select only the
bf:label for either bf:providerName or bf:providerPlace. This search does not
work on triples with blank nodes:

SELECT ?subject ?label
     WHERE { ?subject bf:providerName ?bnode .
                  ?bnode bf:label ?label . }
But it is supposed to work by the spec (SPARQL 1.1)!

And also with blank nodes in the query:

SELECT ?subject ?label
     WHERE { ?subject bf:providerName [ bf:label ?label .] . }

and thirdly with "predicate paths":

SELECT ?subject ?label
     WHERE { ?subject bf:providerName/bf:label ?label . }

viele Gruesse
Thomas Berger
Version: GnuPG v1
Comment: Using GnuPG with Thunderbird -


Karen Coyle
[log in to unmask]
m: 1-510-435-8234
skype: kcoylenet