Using RDF-star, say I have:
?couple :isA :Couple .
and ?couple
takes values such as this one:
<< :Bill :marriedTo :Mary >> :isA :Couple .
Is there any way to extract :Bill
and :Mary
from the triples variable ?couple
, and bind them to variables ?husband
and ?wife
?
I know I could do this:
<< ?husband :marriedTo ?wife >> :isA :Couple .
but I also want the variable ?couple
and have this linked to ?husband
and ?wife
.
One option is to create ?couple
from its constituents:
<< ?husband :marriedTo ?wife >> :isA :Couple .
BIND(<< ?husband :marriedTo ?wife >> AS ?couple)
There is no difference between a triple constructed in this way and the ?couple
from your original example.
Another possibility is to introduce a zero-length property path between ?couple
and another node:
?couple :isA :Couple .
?couple <about:invalid>? << ?husband :marriedTo ?wife >> .
Since there is most likely no triple using about:invalid
as the predicate, the subject will have to match the object.