Contexts at last :)

Unasserted triples, Contexts and things that go bump in the night.

Pat Hayes:

> 2. Dark triples.
> The simplest proposal is therefore to simply allow an RDF
> graph to  contain triples which do not make any assertions.

I agree with Grahm, this is a good term which isolates this new property of
a triple in a larger collection of triples.   Thanks for coining it :)

> One way to do this would be to explicitly introduce a 'context'
> mechanism into the basic RDF syntax, as Tim did in N3. This
> amounts to having some way to refer to a set of triples, ie an RDF
> graph, as a single entity which can stand in the subject or object
> position of  another triple. For example, we could extend Ntriples
> by some  notation (eg curly brackets) which allows RDF to
> indicate an entire  graph rather than a single node.

I agree, and thanks for saying that.   As Grahm, Jonathan, and I have
suggested, using the <rdf:RDF>...</rdf:RDF> construct  nested within a RDF
graph will give us this ability.  At the risk of being tedious let me
describe this in more detail:   Any triple in the document which is not
directly under the *first*  rdf:RDF container would be considered dark *to
that first level*.  Just like the rdf:description container,  the rdf:RDF
container would give us the ability to place dark contents in the subject
and object slots of any triple.

I think we also need the ability to assign a URI to the dark contents making
it a first class object in our domain of discourse.  Then we can refer to
that resource from somewhere else in the graph, not necessarily just within
one nesting tree.  We could  use the same mechanism  that is used in
rdf:description(s) - viz just add another attribute. For example:

<rdf:RDF  rdf:context =http://foo/ >
 ....contents asserted in http://foo/ ....
          <rdf:RDF  rdf:context ="http://bar/" >
           ....contents asserted in http://bar/  but dark to http://foo/
          </rdf:RDF >

Obviously just like when a rdf:description node is not labeled with the
rdf:about attribute, it is a Bnode; so when a rdf:RDF node is not labeled
with a rdf:context attribute it is also a Bnode.  Also now someone can put
<rdf:RDF  rdf:context =http://foo/ > .... contentA....</rdf:RDF> in a
document at any level of nesting;  and then someone else can refer to that
resource from some *other* document.

The change in the Ntriples syntax is just as simple:

<context> <subject> <predicate> <object>.
or if you prefer
<context> = {<subject> <predicate> <object> }.
where the current RDF without dark triples is just
{<subject> <predicate> <object> }.

>However, this would be a major change to RDF syntax.

Imho, this is not a major change.  Thing is that we need this ability now
....actually we needed it a couple years ago when it was first proposed and
ignored.  Were the WG,  in it's haste to finalize,  not give us this simple
ability, there will be at least one very disappointed RDF enthusiast.

As far as use cases, there are lots of them.  For example: we need a way for
a group of people with common interests to share collections of statements,
give provenance to those collections,  and to talk about how they are
interrelated.  I proposed such a use for sharing whitelists to reduce spam
yesterday in [1] below.

[1 PS]

I can't leave you without some pictures .. so here they are:
And I hereby declare that mentographs don't mean anything.  They are just
the uninterperted data structure of a labeled directed graph.

Seth Russell

Received on Thursday, 21 March 2002 14:51:07 UTC