OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

xdi message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: About +x+y


> -----Original Message-----
> From: Nick Nicholas [mailto:opoudjis@optushome.com.au]
> Sent: Monday, February 02, 2009 10:06 PM
> To: OASIS - XDI TC
> Subject: Re: [xdi] notes from meeting in Nice, Jan 29 2009
> 
<snip>
> 
> You're not making any commitment about what the relationship is
> between +x+y and +y. I had been suggesting +x+y/$is$a/+y, but after
> revisiting the RDF model (and statements such as $get$a$xsd$boolean),
> I'm not as confident about that, so you needn't change anything.

I have been trying to find time to post a wiki page about this. Markus and I
had a long discussion about this last week and concluded that +x+y not only
infers something about +y, but in fact infers all eight of the following XDI
statements:

STATEMENT: +x+y

INFERS STATEMENTS:
#1) +x/$has/+y
#2) +y/$is$has/+x		;inverse of #1
#3) +x/+y/+x+y
#4) +x+y/$is+y/+x		;inverse of #3
#5) +y/$a/+x+y
#6) +x+y/$is$a/+y		;inverse of #5
#7) +x/$has$a/+y
#8) +y/$is$has$a/+x	;inverse of #7

#1 - #6 were statements we have discussed before. We were rather surprised
by #7 and #8, i.e., that a $has relationship infers a $has$a relationship.
Nick had originally pointed out to me that he thought this followed, but I
thought there was a reason it didn't. However the conversation with Markus
confirmed that it does directly out of #3, i.e., the fact that +x+y means
that +x/+y/+x+y, and therefore that +x MUST have a +y.

In cooking on this last week I had revelation about this that underscores
the key difference between $has and $has$a. As metagraph predicates, both of
these indicate an outgoing arc on a XDI graph node. But a +x/$has/+y
statement references EXACTLY ONE outgoing +y arc from node +x -- the +y arc
that uniquely addresses another node in the XDI RDF graph -- while a
+x/$has$a/+y statement describes the set of ALL outgoing +y arcs from node
+x (cardinality unspecified in the absence of addition of cardinality
predicates, e.g. $has$a$min$1).

We assign the target node of the +x/$has/+y statement the address +x+y. By
definition that means that the XDI subject address +x+y infers the XDI
statement +x/+y/+x+y (#3 above). And it is from #3 that #4, #5, #6, #7, and
#8 derive.

So this means that the same XDI subject can have both a $has and a $has$a
statement about the same predicate. The following is an example X3 document
showing this where +x is replaced with =drummond and +y is replaced with
+friend.

=drummond
	$is$a
		+person
	$has
		+friend
	$has$a
		+friend
	+friend
		=drummond+friend
		=markus
		=giovanni
=drummond+friend
	$is$a
		+friend
	$has
		$contract
	$a
		=markus
		=giovanni
=drummond+friend+contract
	$get
		/
			=drummond
				+email

I find this example very revealing about the difference in semantics between
$has and $has$a. The $has relationship between =drummond and +friend creates
a new subclass of +friend called =drummond+friend. I can then make =markus
and =giovanni members of that subclass using a $a predicate. 

By contrast, the $has$a relationship means =drummond has a predicate +friend
with zero-to-n cardinality. In the example above, the cardinality is 3: the
objects are =drummond+friend (the object inferred by the
=drummond/$has/+friend statement), =markus, and =giovanni.

The first approach - the =drummond/$has/+friend relationship - allows me to
express that the XDI subjects =markus and =giovanni are subclasses of the
XDI subject =drummond+friend. The second approach - the
=drummond/$has$a/+friend relationship - allows me to express that the XDI
subjects =markus and =giovanni are targets of a +friend relationship from
the XDI subject =drummond. The difference is subtle but clear.

Markus and I also worked out the exact set of RDF statements represented by
the XDI statement +x/$has/+y (or +x+y, or any of statements #2-#6 above):

A) <xri:+x+y> <rdfs:subClassOf> <xri:+y>
B) <xri:+x+y> <xri:$is+y> <xri:+x>
C) <xri:$is+y> <rdfs:inverseOf> <xri:+y>

RDF statement A proves out Nick's original hypothesis that +x+y/$is$a/+y
(XDI statement #6 in the list above). But Nick's also right that this
statement alone does not fully capture the constraints on +x+y. RDF
statements B and C are also needed.

Note that the RDF statements B and C require the $is metagraph predicate to
construct the URI necessary to express the RDF using RDFS predicates. As I
pointed out in an email a few weeks ago, this explains why XDI addressing is
so foreign to RDF: it requires structured identifiers to express the
semantics, and in conventional RDF the identifiers are opaque.

Hope this helps,

=Drummond 



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]