[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]