Re: New Proposal (6.1) for GRAPHS

On Wed, 2012-04-04 at 08:25 +0100, Andy Seaborne wrote:
> 
> On 03/04/12 01:27, Sandro Hawke wrote:
> >>> There's some misunderstanding here, yes.   Maybe you can talk through
> >>> >  >  some particular thing you imagine doing, involving merging and TriG, and
> >>> >  >  I'll be able to pick it up.   From what you've written, I'm confused.
> >>> >  >
> >>> >  >  Maybe I can clarifying by translating this TriG document:
> >>> >  >
> >>> >  >            <u1>    {<a>    <b>    <c>   }
> >>> >  >
> >>> >  >  into this English declaration:
> >>> >  >
> >>> >  >            The URI 'u1' denotes something, and that thing has exactly one
> >>> >  >            associated RDF Graph.   That associated RDF graph consists of
> >>> >  >            one RDF triple, which we can write in turtle as "<a>   <b>   <c>".
> >> >
> >> >
> >> >  Clearer, but not what I would have expected.
> >> >
> >> >  Why "exactly one associated RDF Graph"?
> > My intuition is that there are important thing you can't do if you allow
> > more than one graph to be associated with the named object, but I
> > haven't really explored that because SPARQL datasets clearly allow only
> > one GRAPH for a given name, so I figured we'd stick with that.  That's
> > why I said hasGraph was a functional property.
> 
> A query executes at some (idealized) point in time, and a query closes 
> the world to execute (or they'd never complete!).   An RDF Dataset is 
> the local concept for the data being queried - there's no statement 
> about anything outside the local context made, or needed for SPARQL.

I know all that, but I can't figure out what that has to do with whether
hasGraph is a functional property.  

So, let me try working up from first principles, and maybe it'll become
clear where we're misunderstanding each other.

In the current RDF 1.1 Concepts and Abstract Syntax editor's draft, we
say:
        
        An RDF Dataset is a collection of RDF graphs and comprises:
        
              * Exactly one default graph, being an RDF graph. The
                default graph does not have a name.
              * Zero or more named graphs. Each named graph is a pair
                consisting of an IRI (the graph name), and an RDF graph.
                Graph names are unique within an RDF dataset.

We can view the set of (graph_name, graph) pairs as a relation, R.

Since "Graph names are unique within an RDF dataset", R is a function
(or, in OWL speak: R is functional).

Since the graph name is syntactically an IRI, it also happens to be an
RDF term.   Let's call the thing it denotes, in the usual RDF sense,
I(graph_name).

There's another relation R' such that forall N G: R(N,G)=R'(I(N),G).

Because of how we've defined R', R' is also a function.

The function R' is what I call the predicate rdf:hasGraph.  

Also, the spec qualified uniqueness as "within an RDF dataset".   Design
6.1 essentially removes this restriction.  This gives us a plausible
notion of merging datasets.

So, in conclusion, it logically follows from, "Graph names are unique
within an RDF dataset", that rdf:hasGraph is functional.

    -- Sandro

Received on Wednesday, 4 April 2012 12:35:10 UTC