One can apply any arbitrarily complex set
of rules to “prove” whether two or more identifiers map the same
entity, or one can simply map the identifiers and compare the results. I don’t
see the practical benefit of the former.
~ Steve
From: Drummond Reed
[mailto:]
Sent: Friday, April 04, 2008 11:28
PM
To: 'Giovanni Bartolomeo';
Subject: [xdi] XDI expressivity
(was RE: [xdi] Re: $greater, $lesser, etc.)
Giovanni,
I apologize for not responding on this
thread earlier but I have been in a solid week of meetings in Boston as well as
prepping for RSA all next week so I am behind on my email. It will be another
ten days before I’m able to start getting caught up.
However since I’m on a plane back to
Seattle right now, and since you’ve asked such an _excellent_ question that raises a subject
I’ve been eager to start discussing, see my answer below your message.
From: Giovanni
Bartolomeo [mailto:]
Sent: Friday, April 04, 2008 3:39
AM
To:
Subject: Re: [xdi] Re: $greater,
$lesser, etc.
Dear All,
I've just elaborated a bit more on my previous comments.. BTW I didn't receive
any answer, maybe I'm missing something, but I think this is a relevant point:
At 18.51 31/03/2008, Giovanni Bartolomeo wrote:
What it is still a bit obscure to me are the following statements:
=giovanni/+phone+home/"+39 06 4451843"
=giovanni+phone/+home/"+39 06 4451843"
aren't they equivalent? furthermore, aren't they both asserting the
same as giovanni+phone+home/$type$xsd$string/"+39 06 4451843"?
Giovanni
What I realized is that these three statements:
a. =giovanni+phone+home/$type$xsd$string/"+39 06 4451843"
b. =giovanni/+phone+home/"+39 06 4451843"
c. =giovanni+phone/+home/"+39 06 4451843"
are actually NOT equivalent in
terms of semantics:
a. is asserting that the type for =giovanni+phone+home is a string and its
value is "+39 06 4451843"
b. is asserting that =giovanni's phone at home is "+39 06 4451843",
being =giovanni the subject
c. b. is asserting that =giovanni+phone's a property, home, which is equals
"+39 06 4451843", being =giovanni+phone the subject
HOWEVER in order to enforce
consistency, these three addresses
a. =giovanni+phone+home/$type$xsd$string/
b. =giovanni/+phone+home/
c. =giovanni+phone/+home/
should point to the SAME node in
the XDI graph (or be aliases). Is this correct? What do you think?
Giovanni
********** Drummond replies **********
I am so glad someone finally asked this
question in black and white – I have been thinking about this issue of
“XDI expressivity” for months now given the fundamental
capabilities of XDI RDF. Forgive me for providing an extended answer, but I
think the question can be so revealing about the power of XDI RDF.
First, to answer your question right up
front, “Do those three XDI addresses identify the same literal
node?”, my answer is: “You cannot know deterministically without
reference to the XDI dictionaries used by the statements.”
The reason is that the three statements
represent three different paths through the XDI RDF graph, and as you pointed
out, each path represents different semantics. So you you really have to drill
all the way down into the graphs, and the statements represented by each graph,
in order to answer your question.
To do this, let’s start by looking
at the three graphs visually in X3 Simple (one reason I love X3 Simple is that
it lets you see the visual pattern of the graph while at the same time seeing
the addresses).
#1
=giovanni+phone+home
$type$xsd$string
"+39 06 4451843"
#2
=giovanni
+phone+home
"+39 06 4451843"
#3
=giovanni+phone
+home
"+39 06 4451843"
Now, let’s “fully
explode” each of these into ALL the XDI statements they represent.
#1 (5 statements)
=giovanni
$has
+phone
=giovanni+phone
$has
+home
$type
$has
$xsd
$type$xsd
$has
$string
=giovanni+phone+home
$type$xsd$string
"+39 06 4451843"
#2 (3 statements)
=giovanni
$has
+phone+home
+phone
$has
+home
=giovanni
+phone+home
"+39 06 4451843"
#3 (2 statements)
=giovanni
$has
+phone
=giovanni+phone
+home
"+39 06 4451843"
Isn’t it fascinating that the first graph
represents five statements, the second three, and the final one only two?
In any case, all three options here (plus
more - see below) appear to be completely valid chains of XDI statements
between the XDI subject =giovanni and the XDI literal "+39 06
4451843". But none of them asserts exactly the same semantics (the only
way to do that would be to use XDI synonyms, i.e., $is statements). However
using an XDI reasoner and an XDI dictionary (which itself is just a set of XDI
statements comprising definitions), you could verify that according to that
dictionary, all these statements identify the same literal node.
In fact the dictionary is pretty short.
Here it is:
+phone
$is$a
<--1-->
+
$type$xsd$string
$has
<--2-->
+home
$a$has
<--3-->
+home
$has$a
<--4-->
+home
$a$has$a
<--5-->
+home
+home
$is$a
<--6-->
+
$has
<--7-->
+phone
$a$has
<--8-->
+phone
$has$a
<--9-->
+phone
$a$has$a
<--10-->
+phone
$type
$has
$xsd
$type$xsd
$has
$string
As short as it is, the semantics represented
by those statements – while crystal clear from a pure XDI semantics
point-of-view – represent a surprising range of grammatical relationships
a human POV. Roughly translated to English, the first ten statements say:
1) A phone is both a subject (noun) and a
label for a type of data (typically called a “phone number”, but
often abbreviated in English as just “phone”).
2) A phone can have a home, i.e., as a
noun, it can have a possessive relationship with another noun, home.
3) A phone is something a home can have
(possessive relationship).
4) A phone has an attribute of home.
5) Phone is an attribute of a home.
6) Home is a subject.
7) A home can have a phone (possessive
relationship – inverse of #3).
8) A home is something a phone can have
(possessive relationship – inverse of #2).
9) A home has an attribute of phone
(inverse of #5).
10) Home is an attribute of a phone
(inverse of #4).
Armed with that dictionary, an XDI reasoner
can quickly prove that all the following XDI statements identify the same
literal:
=giovanni+phone+home/$type$xsd$string/
=giovanni+home+phone/$type$xsd$string/
=giovanni/+home+phone/
=giovanni/+phone+home/
=giovanni+phone/+home/
=giovanni+home/+phone/
However, if you remove any of those XDI
dictionary statements, some of the above are no longer provably true. For
example, if you remove the statements:
+phone
$has
$home
+home
$a$has
+phone
Then you could no longer prove that the
following two statements identify the same XDI object as the rest:
=giovanni+phone+home/$type$xsd$string/
=giovanni/+phone+home/
They MIGHT identify the same literal as
the rest, but now you have nothing you can prove that with.
There’s much more I’d like to
say about this simple dictionary, but I’m out of time. However I
encourage everyone who is interested to study it closely. To test your
knowledge, here’s a quiz question:
“Given the dictionary above, how can you prove that it is valid for the
XDI object of all six statements to be a literal string?”
=Drummond