Jena's DESCRIBE behavior is pluggable. [1] If you can live with one "hop" on
bnode traversal, you can use a plain query with isBlank. I'm sure this could be
written better, but something like:
CONSTRUCT { ?sub ?pred ?obj }
WHERE {
{ VALUES ?sub { <myuri> }
?sub ?pred ?obj . }
UNION
{ <myuri> ?somepred ?sub .
?sub ?pred ?obj.
FILTER isBlank(?sub) }
}
The legs account one for properties directly on the resource and the other for
properties on bnodes connected to the resource. If you may have bnodes
connecting to bnodes, you can also iterate a query like that to get the
closure. For most people, one "hop" is likely enough.
---
A. Soroka
The University of Virginia Library
[1] https://jena.apache.org/documentation/query/extension.html#describe-handlers
> On Apr 15, 2017, at 5:58 AM, james anderson <[email protected]> wrote:
>
> good afternoon;
>
>> On 2017-04-15, at 11:43, Laura Morales <[email protected]> wrote:
>>
>>> Blank node closure is non-trivial
>>
>> wouldn't be this the same problem with URLs as well?
>
> yes, in general.
>
>> For example if a node is pointing to another resource's URL and I want to
>> retrieve some properties of that linked resource from the same query?
>
> although one often sees sparql’s ‘describe’ treated with antiseptic isolation
> gloves, there is a thorough description of how one might implement it[1],
> which is followed in various respects in several sparql implementations.
> by this approach, the distinction between iri and blank nodes bounds the
> description.
>
> best regards, from berlin,
> - - -
> [1] : https://www.w3.org/Submission/CBD/
> - - -
>
>