Simon, let me go back to my original question:

This is a simplified version of the BIBFRAME data:

:instance27 bf:publication _:genid4 .
_:genid4 bf:providerName _:genid5 .
_:genid5 bf:label "Morrow" .

It perhaps makes more sense to look at it in the RDF/XML, before 
converting it to triples:


Assuming this is behind a SPARQL end-point (or an imitation thereof), to 
retrieve the bf:label for the bf:providerName, you need to be able to 
make a sparql query that finds the subject of a triple with predicate 
bf:providerName, then uses that IRI as the subject of the query seeking 
the bf:label.  It appears, however, that this does not work when the 
object later used as a subject is a bnode.

The query below, which I thought would work, fails to return anything:

PREFIX bf: <>
SELECT ?subject ?label
     WHERE { ?subject bf:providerName ?bnode .
                  ?bnode bf:label ?label . }

EXCEPT when the blank nodes are converted to actual IRIs (which Virtuoso 
does when it interprets RDF/XML). That is, with actual bnodes, the query 
fails; with skolemized [1] identifiers, it succeeds.

I think there is a hint in this answer online: " with a SPARQL-compliant 
system it is not possible to refer to the identifier of a blank node in 
the queried graph from within a SPARQL query pattern. " [2] However, I 
can't find an example that looks like the BIBFRAME case, and that 
particular "explanation" isn't crystal clear to me.

(Maybe I should post a query to the "answers" forum.)


On 7/15/14, 5:39 PM, Simon Spero wrote:
> It is generally better to avoid blank nodes in SPARQL queries, since 
> it is usually  clearer if you use  ?y instead of _:y .
> Simon
> On Tue, Jul 15, 2014 at 8:37 PM, Simon Spero <[log in to unmask] 
> <mailto:[log in to unmask]>> wrote:
>     That's would be the same query (and same basic graph pattern).
>     On Tue, Jul 15, 2014 at 7:18 PM, Karen Coyle <[log in to unmask]
>     <mailto:[log in to unmask]>> wrote:
>         On 7/15/14, 10:47 AM, Simon Spero wrote:
>             4. There is no problem with a SPARQL  query binding a
>             variable to a blank node; however it can be difficult to
>             use the value in second query.
>         Simon, I admit that I struggle often with the terseness of
>         your prose. Is this #4 your statement of the problem that I
>         ran into, as per my original post? In other words, is
>         Where {
>         X p _y .
>         _y p Z .
>         }
>         using the value in a second query? If not, does one of your
>         other points address this?
>         thx,
>         kc
>         -- 
>         Karen Coyle
>         [log in to unmask] <mailto:[log in to unmask]>
>         m: 1-510-435-8234 <tel:1-510-435-8234>
>         skype: kcoylenet

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