Giovanni, I’m cleaning up some emails
in the past week that that I never answered. This one had two questions from
you, which I’ll just answer up front since the thread was getting pretty
deep (and it also answers a question pending from Markus too).
The first one was “what does +a+b+c
infer?” I think this is now answered by the $has section of http://wiki.oasis-open.org/xdi/XdiOne/RdfGraphModel
and by diagrams 3A, 3B, 3C, and 3D of http://www.oasis-open.org/committees/download.php/30719/xdi-rdf-graph-model-diagrams-v2.pdf.
Please look these over and let me know if you still have issues.
The second one was a suggestion about
Markus’ question about addressing predicates (arcs). You suggested that
maybe all addresses in the graph were actually arcs.
I investigated that path once about two
years ago but realized that while all the identifiers are arcs, the arc itself
is not what is identified by the arc. What the arc identifies is the node to
which it points.
But it is important to mention that the XDI
RDF graph does have the ability
to address a set of arcs
identifing a set of nodes, not just one node. We do this by allowing XDI addresses
that consist of {subject}/{predicate} and no object. In fact you can draw the
following table based on XDI address forms:
{subject} <==
addresses exactly one node if true
{subject}/{predicate} <==
addresses 1-n nodes if true
{subject}/{predicate}/{object} <==
addresses exactly one node if true
{subject}/{predicate}// <==
addresses 1-n nodes (a context) if true
So {subject}/{predicate} and {subject}/{predicate}//
are both ways to address a set of n>= 1 nodes in the graph.
Hope this helps,
=Drummond
From: Giovanni
Bartolomeo [mailto:giovanni.bartolomeo@uniroma2.it]
Sent: Friday, January 09, 2009
2:47 AM
To: Drummond Reed
Cc: 'Nick Nicholas'; 'OASIS - XDI
TC'
Subject: More comments on XDI
metagraph predicate examples (was: RE: [xdi] Minutes: XDI TC Telecon Thursday
1-2PM PT 2008-12-18)
Hello Drummond,
thank you for your answers; but I fear I've some more concerns.. please see my
comments below.
Thanks,
Giovanni
At 09.09 30/12/2008, Drummond Reed wrote:
Giovanni pointed out that Statement 6 in the xdi-rdf-graphing-v1 document is
not consistent with the link contract example found on page 33 of the
xdi-rdf-model-v11 document:
http://www.oasis-open.org/committees/download.php/29748/xdi-rdf-model-v11.pd
f
In that document, =drummond/$has/+friend$contract results in the XRI
=drummond+friend$contract, but it should be =drummond(+friend$contract).
Drummond agreed this should be changed in the next version.
UPDATE: In his study of the Statement 6 issue identified by Markus, Drummond
subsequently revised the proposed graph structure for compound $has
statements. This eliminates the issue identified by Markus and also removes
the inconsistency with the V11 XDI RDF Model document. V2 of the XDI RDF
Graphing document has been posted at:
[giovanni] To further
clarify, I also propose to have
(1) =drummond+friend/$has/$contract
instead of
(2) =drummond/$has/+friend$contract
even if they both result in
(3) =drummond+friend$contract
statement (2) seems to me to assert that a subject +friend$contract exists
regardless the context it is intended to be into (=drummond). Statement (1)
instead put $contract in the context of =drummond+friend and +friend in the
context of =drummond. Or maybe I'm missing something?
[=Drummond] No, I think you are correct, statement (2) implies that there is a
XDI subject with the XRI +friend$contract. But I think that is implied in all
cumulative $has statements. As I clarified in the page I just posted (
http://wiki.oasis-open.org/xdi/XdiOne/RdfGraphModel), in an XDI context,
the XRI =drummond+friend$contract infers all of the following XDI RDF
statements:
(a)
=drummond/$has/+friend/
(b)
=drummond+friend/$has/$contract
(c)
=drummond/$has/+friend$contract
[giovanni] Yes, I see that
+a/$has/+b+c ==> +a+b+c
+a+b/$has/+c ==> +a+b+c
however, if you want to REVERSE these statements, starting from +a+b+c,
you can infer EITHER (1) +a/$has/+b+c OR (2) +a+b/$has/+c OR (3) both. And the
outcomes are different in the three different cases.
In particular, if you have (1) +a/$has/+b+c, this implies that you should
have also +b/$has/+c.
But if you have (2), then you should have also +a/$has/+b.
Coming back to the example, from =drummond+friend$contract you may infer
(1)
=drummond/$has/+friend/
=drummond+friend/$has/$contract
OR
(2)
+friend/$has/$contract
=drummond/$has/+friend$contract
OR (3)
both.
I think that (1) and (2) are asserting very different things and that (1) is
what we want to say, whereas (2) is not the same.
[giovanni] In example #8 (equivalence +x/$is/+y) the arc connecting the
two circles is labelled with +y, does it have a particular meaning? Maybe, for
consistency's sake, it is better to maintain the graphical convention to name
the arc after the predicate. Since $is is a symmetric predicate, what do you
think about the following amendment?
[=Drummond] The graph you draw is 100% accurate – it is a depiction of
the full metagraph statement, i.e., of the XDI RDF statement +x/$is/+y. The
graph I was drawing is a depiction of the resulting statement in the XDI RDF
graph, which is that the node +x has a self-referential arc of type +y. So both
are correct, and I agree we should show both in the two columns. I’ll
make a note to revise that in the next version.
[giovanni] Ok, I see. But in the graph in example #9
+x/$has$a/+y
+x/+y
the arc +y is used to represent a property belonging to +x (this also applies
to all meta-graphs depicted in the document). Thus wouldn't the picture in
example #8 read as: +x has a property +y whose value is +x itself: +x/+y/+x ?
BTW I think this is strongly related to another issue which has come to my
mind. I remember that in the ATI model it was stated that addresses refer to
ARCs, not to NODEs. This is consistent with some OO programming languages like
c++ and Java which have the concepts of pointers and objects. Pointers are
represented through arcs pointing to nodes which are objects. Maybe we have a
similar issues here: XDI addresses might be arcs, not nodes.
This should address also Markus' question:
[markus] BTW in your terminology, a predicate is not a node in the graph,
right? So predicates themselves don't have addresses?
What about to amend this
"Every *node* in the XDI RDF graph can be addressed by at least one XRI
representing an XDI address, and every XDI address identifies a unique *node*
in the XDI RDF graph."
into
"Every *ARC* in the XDI RDF graph can be addressed by at least one XRI
representing an XDI address, and every XDI address identifies a unique *ARC*
in the XDI RDF graph."
(..but maybe I can miss some issues here...)?