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: Definition of $has metagraph predicate


Giovanni's message raised the question of whether there is consensus on the TC about the definition of $has semantics that we reached last spring and documented on May 15 2009 the wiki spec (http://wiki.oasis-open.org/xdi/XdiOne/RdfGraphModel).

 

In that definition, we say (emphasis in red added):

 

********** EXCERPT ***********

The $has metagraph predicate describes the relationship between a node and an outgoing arc in the XDI RDF graph. The subject of a $has statement is the XRI of the node from which the arc originates, and the object is the XRI of the arc.

The inverse predicate, $is$has, describes the same relationship, however the subject and object are reversed, i.e., the object is the XRI of the node from which the arc originates, and the subject is the XRI of the arc.

When used alone as a metagraph predicate, $has is an assertion that reifies this subject/predicate relationship so that this reification can serve as a new XDI RDF subject node. The XDI address of this new subject node is a direct concatenation of the XRI for the subject of the $has statement and the XRI for the object of the $has statement. For example:

        +x/$has/+y     ==>     (+x/+y)     ==>     +x+y

 

*********** END EXCERPT ************

 

Also, at the end of the $has and $is$has definition section, we said:

 

********** EXCERPT ***********

 

[TODO: add explanation that $has statements do not and cannot infer cardinality.]

 

*********** END EXCERPT ************

 

The red highlighted section in the first excerpt documents, in my recollection, the realization we had that $has statements expressed a reification of a subject/predicate relationship. That's why the parentheses on (+x/+y) are necessary.

 

Secondly, the fact that a $has statement resulted in reification that produce a new XDI subject node explains why $has statements have no cardinality – a conclusion that as I recall clearly had consensus across all of us that were active in the discussion.

 

To use an analogy to English, I can say "ball color", but that statement has no cardinality about ball colors – it is just defining a TYPE of color. Type has no cardinality.

 

If we wanted to talk about the specific colors a specific balls has, we would say, "a ball has a color" (i.e., a $has$a relationship). With a $has$a relationship, you can now add cardinality, i.e., "a ball has 3 colors".

 

But "ball color" as a concept (a noun in English), identifying a type of color, is very different than the statement "a ball has a color", which is not a noun, but a complete statement about the relationship of a ball (a noun) and "color" (another noun, representing a property). In XDI, I believe this is illustrated by the difference between the following:


        $HAS STATEMENT
        ball color
        +ball/$has/+color
       (+ball/+color)
        +ball+color

        $HAS$A STATEMENT
        ball has a color
        +ball/$has$a/+color
        +ball/+color

In conclusion, I believe the current definition of $has is what is currently documented in the spec, as specifically illustrated in the example:

 

        +x/$has/+y     ==>     (+x/+y)     ==>     +x+y

 

The only revision I would make to this example is that the arrows may imply the inferences are only unidirectional, while I think we all believe they are bidirectional. So the revised diagram would be:

 

        +x/$has/+y     <==>     (+x/+y)     <==>     +x+y

 

If this is true, then I believe it follows that $has statements cannot be either only left or only right associative, but only full associative, because if the inferences above are true, then both of the following are true:

 

        +x+y/$has/+z     <==>     (+x+y/+z)     <==>     +x+y+z
        +x/$has/+y+z     <==>     (+x/+y+z)     <==>     +x+y+z

 

Again, I believe this is entirely logically consistent, because it also means:

 

        +x+y+z/$is$a/+z
        +x+y+z/$is$a/+y+z

 

Now, it is important to point out (which we do not currently do in the spec – I think this should be fixed) that left or right associativity CAN be specified through the use of XDI reification (cross-references). In other words, to make +x+y+z either left or right associative, the XDI statements would be:

 

        (+x+y)/$has/+z     <==>     ((+x+y)/+z)     <==>     (+x+y)+z
        +x/$has/(+y+z)     <==>     (+x/(+y+z))     <==>     +x(+y+z)

 

I believe this provides the expressivity that Giovanni believes is required to accurately reflect semantics where two XDI RDF nodes can only be considered in their own context (e.g., his "Markus contract sig" example, where "Markus contract" is to be treated as a unit).

 

The result, in my understanding, is a definition that has no logical inconsistencies or ambiguities.

 

So, the question to the TC is: does anyone disagree with these definitions? If so, why?

 

=Drummond

 



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