unlabelled [] form on its own can only represent a tree.
A node in such a graph can't have two "in" arcs.

Nothing specific to RDF syntax here - see JSON and XML. Any sharing needs a pointer in some way. Applies to DAGs and cycles.

You can mix labelled and unlabelled forms.

Jena pretty prints your example using one label:

<a>
        ex:relates  _:b0 .

_:b0    ex:relates  [ ex:relatedBy  _:b0 ;
                      rdf:type     ex:bar
                    ] ;
        rdf:type   ex:foo .

        Andy

On 04/12/2020 20:54, Dan Brickley wrote:
see also
https://www.w3.org/TR/turtle/#unlabeled-bnodes



On Fri, 4 Dec 2020 at 20:20, Martynas Jusevičius <[email protected]>
wrote:

I don't think you can use the [ ] form to create cycles.

On Fri, Dec 4, 2020 at 8:53 PM Jeffrey Kenneth Tyzzer
<[email protected]> wrote:

Hi, Group.

Consider this small model:

a --relates--> b
b --relates--> c
b <--relatedBy-- c

Note that the b to c relationship is reciprocal.

I’d like to represent b and c as blank nodes. Using the label form, it’s
seemingly straightforward (I’ve added a couple of additional rdfs:type
triples to fill-out a bit what I show next):

a ex:relates _:b
_: b rdfs:type ex:foo
_:b ex:relates _:c
_:c rdfs:type ex:bar
_:c ex:relatedBy _:b

Using the abbreviated form, though, doesn’t seem possible :

a ex:relates [ rdfs:type ex:foo ; ex: relates [ rdfs:type ex:bar ;
ex:relatedBy <what would go here to refer to the first (outer) blank node?>
] ].

I suppose I’m asking if something can be both the container and
contained, but perhaps there’s some syntactic sugar/legerdemain (or
Jena-specific syntax) I’m not aware of that makes this possible.

Thanks.

--Jeff


Reply via email to