W3C home > Mailing lists > Public > public-rdf-wg@w3.org > February 2013

Re: Problem with auto-generated fragment IDs for graph names

From: William Waites <wwaites@tardis.ed.ac.uk>
Date: Sat, 16 Feb 2013 11:30:21 +0000 (GMT)
Message-Id: <20130216.113021.180004687.wwaites@tardis.ed.ac.uk>
To: phayes@ihmc.us
Cc: andy.seaborne@epimorphics.com, public-rdf-wg@w3.org
On Fri, 15 Feb 2013 16:17:17 -0600, Pat Hayes <phayes@ihmc.us> said:

    > Not quite. In a sane world, the name of the graph would always
    > denote the graph, be it an IRI or a bnode. But the WG has
    > decided that IRIs can be used to label a graph while at the same
    > time denoting something else, eg you can use an IRI denoting a
    > person to be the graph label of a record pertaining to that
    > person (or an IRI denoting a time to label a graph true at that
    > time, etc..).

It seems we are back to the two incompatible uses of graph:

    - For making statements about statements
    - For partitioning triples arbitrarily

The obvious next question is, suppose we go back and do allow blank
nodes to refer to graphs as seems to make sense, and we end up with a
bunch of statements, and a bunch of statements about those (supposing
only two levels deep for now), how do we then partition those into
groups for administrative or provenance or whatever purposes?

Pretty soon we also wonder why on earth we have a "default" graph that
is special. Sure it makes sense as a configuration option for a query
answering engine to have some sort of default to help compose queries
more succinctly, but surely that's a surface detail. Graphs that are
written down without labels in trig are just graphs without names. And
why can't we refer to this graph without a name and that graph without
a name?

So, having got rid of the anomaly that means we can't refer to graphs
in the usual way, and excised the special status of the "default"
graph because we can now refer to any number of graphs, we need
another level of indirection to express things like, "I heard from
Alice that Bob thinks the moon is made of green cheese",

    { :bob :thinks { :moon :substance :cheese;
                           :colour :green } } :source :alice.

Or written out in longhand,

    _:b0 {
        _:b1 :source :alice.
    _:b1 {
        :bob :thinks _:b2.
    _:b2 {
        :moon :substance :cheese.
        :moon :colour :green.

And we could even add,

    _:bX {
        <statements_by_alice> :includes _:b0

somewhere to effectively include the whole tree in the partition that
we have made for things that Alice has said that may be otherwise

But I think that somehow trees are controversial. The whole idea of
making the graph label not refer to the graph so as to make partitions
was to avoid trees and nesting.

If we wanted to make the design even simpler, we could just ditch the
idea of a graph altogether and give each statement an identifier. Then
the whole thing could be easily and consistently built up from that,

    :g1 a :Graph;
        :hasStatement :s1, :s2, :s3...

But the WG has been over this ground before, hasn't it?


Received on Saturday, 16 February 2013 11:30:38 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:04:25 UTC