Hi there,

On 13/03/18 16:14, Nicky van Oorschot wrote:
Hi All,

I have been working on a application in which we would like to find triples based on a uri (which could be a subject or a blanknode). Subjects have been working fine, blanknodes have been causing issues. We work with stardog as graphstore behind the application. In stardog requesting a blanknode using a Describe and a construct query works fine. I understand that the implementation of describe varies among implementations and JENA does not accept a blanknode in a describe query:

DESCRIBE _:b0    and    DESCRIBE <_:b0>
HTTP 400 error making the query: Bad Request

Where is that error coming from?

It parses in Jena but <_:label> is Jena-specific syntax for Jena blank nodes. It is not portable to arbitrary other systems.

Also - the _:b0 is not the Jena blank node label anyway. It is a file-scoped label and not the one used internally.

Internally, labels look like:


and sometimes appear encoded with leading B and X2D for "-".


No standard SPARQL or RDF syntax supports blank identity.
This isn't specific to SPARQL.

The correct, standard, portable, way is to re-find the blank node or not use blank nodes and use UUID URIs instead or skolemize the data


You may also be interested in:

which it work towards blank node round-tripping for Fuseki. If there is a way to extend to other systems, then the project would welcome a contribution but without knowing how to send blank nodes over the network, it's a bit tricky. The ideal way is the other system provide an RDFConnection to manage the internal details of their system and as it evolves.

See also:

which is not right on the point about ":" in blank node labels (that changed in Jena the past 6 years!) but suggests <_:> was supported.


Using a construct query another issue ruins my idea.
It does not matter how I create the query as a string or using a ParameterizedSparqlString. The query which gives the results which I need are given to me by Stardog using:
CONSTRUCT {<_:b0> ?p ?o} WHERE {<_:b0> ?p ?o}

However I am not able to get this query to the graphstore through JENA.
JENA always parse the query to:

     _:c0 ?p ?o .
   { _:b0  ?p  ?o }

Which of course gives total different results. How would I be able to get the right query to the graphstore through JENA?

Met Vriendelijke Groet / With Kind Regards
Nicky van Oorschot

Twitter: @nickyvoorschot
_http://netage.nl_ <http://netage.nl/>
M.A. Reinaldaweg 79
3461AJ Linschoten
tel. +31(0)6-20335266

Reply via email to