[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: More on the distinction between $has and $has$a
Thanks Drummond, interesting summary. My comments inline, prefaced by **
From: Drummond Reed Sent: Mon 1/19/2009 5:13 AM To: 'Barnhill, William [USA]'; 'OASIS - XDI TC' Cc: 'Nick Nicholas' Subject: More on the distinction between $has and $has$a In a message to the list on Friday about $has statements, I said: +x/$has/+y does in fact translate into two base graph statements: +x/+y/+x+y and +x+y In reply Bill asked two questions. The first one was: But what do you mean by translate? Do you mean (a) that the presence of the first (+x/$has/+y) in the graph implies the other two (+x/+y/+x+y and +x+y) ; (b) that the presence of the other two in the graph implies the first, or (c) both? What I meant by “translate” should more accurately have been “infer”, i.e., +x/$has/+y in the metagraph infers both +x/+y/+x+y and +x+y . The opposite applies as well. In fact, any one of the following three statements infers the other: +x/$has/+y +x/+y/+x+y +x+y Nick and I also noted that the second statement above infers a fourth statement: +x+y/$is$a/+y
Bill then posed a second question: I agree with (c) for the +x+y part, but am having trouble with the other. If you say (c) for both then +x/+y/+x+y <=> +x+y. So the subject +ball, predicate +color has the object +ball+color as well as +red? That would mean that a query of +ball/+color would return two answers: +ball+color and +color*red? Start by substituating +ball for +x and +color for +y in the three statements above. This yields: +ball/$has/+color +ball/+color/+ball+color +ball+color So far these are all metagraph statements (T-box statements to use the terminology Bill suggests) about classes. There are no base graph (A-box) statements about instances yet. To do that we would need a fourth statement: +ball/+color/+red That’s an A-box statement that says in English “a ball has a color of type red”. Note the “has a” in that sentence. The object of an A-box statement is an instance (yes, +red is also a class, but in this context it is an instance of the class +color). That means that the A-box statement +ball/+color/+red is described by the following two T-box statements (or their inverses): +ball/$has$a/+color +red/$is$a/+color But neither of those is a $has statement. That’s because $has can only be used to describe an arc whose object is a restricted class of that type of arc. In other words, +ball/$has/+color can only be used to create a restricted subclass of +color – specifically the type of color that a ball has. XDI RDF assigns this restricted subclass the XRI +ball+color. About the subclass +ball+color we can infer the following two T-box statements: +ball+color/$is$a/+color +ball+color/$is$has/+ball ** I think the idea of a metagraph $ predicate that does this, essentially the inverse of subClassOf, is an interesting idea. I think making $has that $ predicate is not such a good idea because it violates the principle of Subj Pred Obj. What you are talking about is a subClass of +color that is +ball+color. Saying that +ball $has +color intuitively says something about +ball, not something about +color. Perhaps an alternative is $narrows?
XDI DICTIONARY (T-BOX) +ball/$has$a/+color +color/$a/+red +color/$a/+blue +color/$a/+yellow XDI INSTANCES (A-BOX) +ball/+color/+red +ball/+color/+blue +ball/+color/+yellow But we can’t say +ball/+color/+small because +small not an instance of +color. So, to get back to Bill’s question, say we had an XDI document with the following statements in it: +ball/$has$a/+color +color/$a/+red +color/$a/+blue +color/$a/+yellow +ball/$has/+color <== same as the statement below +ball/+color/+ball+color <== same as the statement above +ball/+color/+red +ball+color/+color/+red This would be a little strange since the two marked statements mean the same thing, but it would still be valid. If we then did a $get on +ball/+color, we’d get two answers: +ball/+color/+ball+color +ball/+color/+red In other words, for this XDI subject – +ball – there are two ways of expressing that it has the color +red. The first way is direct: +ball/+color/+red The second way is to subclass +color into +ball+color and then give its value: +ball/$has/+color +ball+color/+color/+red Both are valid. Both could appear in the same XDI document, though that would be somewhat redundant. Though the first way is simpler, but there can be good reasons to use the second, i.e., create a restricted subclass. One of them is that you want to express different predicates on the subclass. For example: +ball/$has/+color +ball+color/+color/+red +ball+color/+density/+high Note that +ball+color/+density/+high is very different that +ball/+density/+high For me, this analysis helps make the distinction between $has and $has$a much clearer. The former asserts a restricted subclass as a new XDI subject. Its object is always a new class. The latter asserts a predicate on the existing XDI subject. Its object is always an instance. What $has and $has$a have in common, as Nick observed, is that both describe outgoing arcs on an XDI subject, i.e., both are rooted in $has, which is the metagraph predicate representing an outgoing arc. ** Isn't any predicate an outgoing arc on a graph node, so it makes sense that these two would be as well? However this brings up a one more very interesting point that Nick and I discussed last Thursday: at first glance it might appear that if an XDI subject has a $has$a, it implies it has a $has. For example, if you saw +ball/$has$a/+color then it looks like it implies +ball/$has/+color However the analysis above – and specifically the inferences between +x+y and +x/+y/+x+y – show why that’s not true. +ball/$has$a/+color only means you can make XDI statements about +ball/+color. It does not infer that the XDI subject +ball+color exists because it doesn’t infer that the statement +ball/+color/+ball+color exists. That’s a separate statement. Hope this helps. =Drummond |
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]