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