[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: V13 schema examples and discussion
This email follows on the one last week that provides examples of the V13 schema for discussion on tonight's call. Note that it uses all the same examples from last week, only copied forward (see the previous email appended below). Note that the numbers are purely for unique reference on the call. 1) <AbsoluteResource> <AbsoluteXRI>=drummond.reed</AbsoluteXRI > <Resource> <XRI>+email</XRI> <Resource> <XRI>work</XRI> <Data>drummond.reed@cordance.net</Data> </Resource> </Resource> </AbsoluteResource> 2) <AbsoluteResource> <XRI>=drummond.reed/(+email)</XRI> <Resource> <XRI>work</XRI> <Data>drummond.reed@cordance.net</Data> </Resource> </AbsoluteResource> 3) <AbsoluteResource> <XRI>=drummond.reed/(+email)/work</XRI> <Data>drummond.reed@cordance.net</Data> </AbsoluteResource> ***** A processor can also distinguish that the first resource below is an authority, the second is a type, and the third is an instance: 4) <AbsoluteResource> <XRI>=drummond.reed</XRI> <Data>some data here</Data> </AbsoluteResource> 5) <AbsoluteResource> <XRI>/(+email)</XRI> <Data>some data here</Data> </AbsoluteResource> 6) <AbsoluteResource> <XRI>work</XRI> <Data>drummond.reed@cordance.net</Data> </AbsoluteResource> ***** Lastly, this simple schema also reveals two clean ways to solve the puzzling "default" problem that we talked about last week (i.e., how to declare that the default value of "=drummond.reed/(+email)" is equivalent to "=drummond.reed/(+email)/work". Both of the following are equivalent: 7) <AbsoluteResource> <XRI>=drummond.reed</XRI> <Resource> <XRI>+email</XRI> <Data> <Ref>=drummond.reed/(+email)/work</ref> </Data> <Resource> <XRI>home</XRI> <Data>drummond.reed@gmail.com</Data> </Resource> <Resource> <XRI>work</XRI> <Data>drummond.reed@cordance.net</Data> </Resource> </Resource> </AbsoluteResource> 8) <AbsoluteResource> <xri>=drummond.reed/(+email)</xri> <xri>=drummond.reed/(+email)/work</xri> <data>drummond.reed@cordance.net</data> </AbsoluteResource> ***** END CURRENT EXAMPLES ***** =Drummond -----Original Message----- From: Drummond Reed [mailto:drummond.reed@cordance.net] Sent: Wednesday, September 14, 2005 6:05 PM To: xdi@lists.oasis-open.org Subject: [xdi] V12 schema examples and discussion After our call last week, Andy and Steve sent me an analysis of the "how to manage defaults" issue we had discussed that included at the end an interesting proposal for further simplifying the XDI schema. It inspired me to revisit the early schemas we developed, and to realize that if we apply all we've learned in the last year, it would now be possible to capture the intent of the original schema proposal (four elements, no attributes) using just five elements and one attribute (resource, xri, ref, link, data -- plus the boolean attribute "xref" on xri to indicate if the XRI represents the explicit target of a cross-reference, i.e., a backref.) The secret, of course, is how that one additional element (ref) and attribute (xref) solves the key problems we had run into with the earlier super-simple schemas that moved us towards more complex options. Since part of the inspiration for the XDI TC was to achieve the simplest possible data representation model that leveraged the full power of XRIs, because that also translates into maximum flexibility and interoperability (witness HTML), I am particularly interested in revisiting this new variant of the super-simple schema. I believe, in the few days I've had to think about it, that this very simple schema satisfies all the use cases that had moved us towards more complex schemas. It does move slightly more processing into the contents of the XRI element (which now has no children and is just "flat"), however I have an intuition that once they are optimized for it, XDI parsers (like URI parsers) will actually be able to act even more efficiently on this form of address expression than the explicit form we have been using. Another revelation is that a single XRI element fundamentally reveals the 3 levels of the XDI graph - authority, type, and instance - because they are all inherently represented in XRI syntax. To wit: * an authority segment always begins with an XRI authority (GCS character or parentheses) or a URI prefix. * a type segment is always a local path, so when expressed standalone it begins with "/" * an instance is always completely relative, i.e., when expressed standalone as an XRI it begins with neither of the above. So an XDI processor can distinguish that all three of the following describe the same target Data node in the graph: 1) <resource> <xri>=drummond.reed</xri> <resource> <xri>+email</xri> <resource> <xri>work</xri> <data>drummond.reed@cordance.net</data> </resource> </resource> </resource> 2) <resource> <xri>=drummond.reed/(+email)</xri> <resource> <xri>work</xri> <data>drummond.reed@cordance.net</data> </resource> </resource> 3) <resource> <xri>=drummond.reed/(+email)/work</xri> <data>drummond.reed@cordance.net</data> </resource> ***** A processor can also distinguish that the first resource below is an authority, the second is a type, and the third is an instance: 1) <resource> <xri>=drummond.reed</xri> <data>some data here</data> </resource> 2) <resource> <xri>/(+email)</xri> <data>some data here</data> </resource> 3) <resource> <xri>work</xri> <data>drummond.reed@cordance.net</data> </resource> ***** Lastly, this simple schema also reveals two clean ways to solve the puzzling "default" problem that we talked about last week (i.e., how to declare that the default value of "=drummond.reed/(+email)" is equivalent to "=drummond.reed/(+email)/work". Both of the following are equivalent: <resource> <xri>=drummond.reed</xri> <resource> <xri>+email</xri> <data> <ref>=drummond.reed/(+email)/work</ref> </data> <resource> <xri>home</xri> <data>drummond.reed@gmail.com</data> </resource> <resource> <xri>work</xri> <data>drummond.reed@cordance.net</data> </resource> </resource> </resource> <resource> <xri>=drummond.reed/(+email)</xri> <xri>=drummond.reed/(+email)/work</xri> <data>drummond.reed@cordance.net</data> </resource> ****** I look forward to discussing this on tonight's call. =Drummond
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]