- From: Sandro Hawke <sandro@w3.org>
- Date: Thu, 12 Apr 2012 11:09:49 -0400
- To: Andy Seaborne <andy.seaborne@epimorphics.com>
- Cc: public-rdf-wg@w3.org
I'm having a lot of trouble understanding the motivation for
partial-graph semantics. It seems to me like a kind-of-cool but
way-too-complicated idea.
It's like you're saying that any triple:
<a> <b> 7.
is to be understood as saying that the value of the 'b' property of 'a'
is not just seven, but rather it is seven-or-more.
You see the analogy? To me,
<u> { <a> <b> <c> }
looks like tagging the graph { <a> <b> <c> } with the label <u>; but now
I'm being told you're actually tagging some unknown graph that happens
to contain at least the triple { <a> <b> <c> }.
So, back to the number analogy: it seems like the reason people want to
to do this is because they sometimes want to increase the value of this
property. Later they might want to say it's ten-or-more. There seems
to be some concern that this could be a problem if we said that it was
now exactly seven.
I'm starting to suspect that what people want for partial semantics is
actually:
<u> += { <a> <b> <c> }
That is, instead of saying the graph labeled <u> is some graph that
happens to contain <a> <b> <c>, they want to say the graph is hereby
modified to also include <a> <b> <c>. In particular, I think I'm
hearing that kind of thinking in how Lee talks about it.
There's not necessarily anything wrong with this -- it's a whole lot
simpler to understand and implement than partial-graph semantics, I
think. But, by being imperative, it does have different properties
than a declarative design.
FWIW, I'm also reminded by this of open lists. If you have an rdf List
with a first of 1, and a rest which isn't specified, then someone can
come along later and say what the second item is. And they can close it
off, or still live it open --- all without changing/removing any
triples. This technique is used in Prolog programming; I'm not sure
it's useful in RDF.
-- Sandro
On Thu, 2012-04-12 at 12:49 +0100, Andy Seaborne wrote:
> >> The critical issue is what happens on the default case of no information.
>
> Williams comments overtake this but anyway ...
>
> > Put differently, as a test case:
> >
> > Trig Document 1 (D1):
> > <u> {<a> <b> 1 }
> >
> > Trig Document 2 (D2):
> > <u> {<a> <b> 2 }
> >
> > What is the merge/union of D1 and D2?
> >
> > OPTION 1:
> >
> > It's a contradiction. You can't merge D1 and D2.
>
> Can't support.
>
> (and there is a potential denial-of-service attack :-)
>
> > OPTION 2:
> >
> > Merge the graphs, producing Trig Document 3:
> >
> > <u> {<a> <b> 1,2 }
>
> +1
>
> The current situation, or as close as we can determine it.
>
> > OPTION 3:
> >
> > It depends. Use out-of-band information. I argued against
> > this in my email to Arnaud yesterday, and seemed to convince
> > him.
> > http://lists.w3.org/Archives/Public/public-rdf-wg/2012Apr/0054.html
> >
> > OPTION 4:
> >
> > It's not defined, when asked like this. We use something
> > Trig-Like but different:
> >
> > D1A<u> {+<a> <b> 1 }
> > D2A<u> {+<a> <b> 2 }
> > in which case the merge is:
> > D3A<u> {+<a> <b> 1,2 }
> >
> > ==or==
> >
> > D1B<u> {=<a> <b> 1 }
> > D2B<u> {=<a> <b> 2 }
> > in which case there is no merge; they are inconsistent.
>
> OPTION 5:
>
> {= ...} is complete
> {...} is partial -- current situation is "partial"
>
> As a general syntax comment though, it would be far better if the
> additional information were in triples, not in specialised syntax. It
> means the facts can be passed onwards.
>
> Where do they go?
>
> The default graph is one possibility (but that might have other uses).
>
> Another is a meta graph or manifest so a TriG file has a defailu graph,
> a meta graph and labelled graphs. The meta graph has the relationship
> information.
>
> {= ...} might be syntactic short-hand.
>
>
> (I think one aspect of the difficulties around HR14 is that the
> information revealed by 200 vs 303 is not in the data.)
>
> Andy
>
>
Received on Thursday, 12 April 2012 15:10:02 UTC