I sort of understand the situation. However, IMHO,
having unambiguous rule about what that version or date metadata points has its
merit in a way that by just looking at it, you will be able to tell what that
cross reference is pointing to. i.e., you do not have to worry about whether the
date is describing (+email) or (+personal) in the following example.
=sakimura*(+email)*($d*2002-10-10T11:00:00Z)*(+personal)
Always needing to ask the authority about which
interpretation is right is an overhead for implementations. Besides, an
authority may start mixing up the uses and may well screw up.
This pain point become even more accute when we are
talking about multilingual XRI.
Think of this:
=sakimura*chinese_string*($l*za)*japanese_string*($l*ja)*some_string
If I had to ask the authority (in this case =sakimura?)
whether the child or parent that the language metadata describes, then I will
not be able even to show the XRI correctly on screen when I am offline. If
I know 'a priori' that the metadata describes the immediately preceding, then I
will be able to show it without making a query to the authority. Moreover, on
the way of resolving the next authorities from left to right, if I got stuck
with the permission problems, I will be out of luck - I will never know how to
represent the above string on screen.
Besides, is there a syntax to know which way the
metadata is describing?
The reason I think that the metadata should describe
something on the left is because it will be restricting what precedes. This
follows the pattern of restriction from left to right. e.g.,
=sakimura*(+email)
actually will be the
vector of email addresses that I had during my life. *($d*2002-10-10T11:00:00Z)
constrains it to this particular date. You could argue that it could have been
=sakimura*($d*2002-10-10T11:00:00Z)*(+email)
and the date is
describing the email. However, I would like to interprete it as ("me" at
2002-10-10T11:00:00Z)'s email. Let me do one more: If the metadata were to
describe something on its right, then to describe "me" on a particular date, I
would have to do:
=*($d*2002-10-10T11:00:00Z)*sakimura
I think this is not
quite right.
Nat
From: Drummond Reed
[mailto:]
Sent: Monday, January 16, 2006
5:26 PM
To: Sakimura, Nat; 'Schleiff, Marty'; 'Wachob, Gabe';
Subject: RE: [xri] Feedback requested on
terms used in Metadata spec
Nat, there is no
inherent "problem" with this approach if that is what the XRI authority
intended. What Marty and Dave and I found, however, was that for every use of
a date cross-reference describing its parent node, another example can be
created in which it described its child node.
So we concluded that
the only thing that can be stated unambiguously is
that:
1) A $d
cross-reference describes an identifier representing a date (which is
contained in the cross-reference)
2) The XRI authority
that assigns the $d cross-reference is responsible for interpretation of what
it "describes" outside of the cross-reference.
In other words, we
don't need to define in the Metadata spec that a metadata cross-reference
describes the node before it or the node after it, only that it defines a date
(or version, or language, or type) and can be compared with other XRIs that
are otherwise identical except for the same
cross-reference.
So let me turn the
question around: do you see anything wrong with this
approach?
=Drummond
From:
Sakimura, Nat [mailto:]
Sent: Sunday, January 15, 2006 6:37
PM
To: Drummond Reed;
Schleiff, Marty; Wachob, Gabe;
Subject: RE: [xri] Feedback requested on
terms used in Metadata spec
Sorry, I still do not quite follow, I guess, but my
feeling is that it is very useful if one can determine what the metadata
really describes. For example, for version, it is nice to be able to determine
that in
=GabeW*resume*($d*2002-10-10T17:00:00Z)*job
*($d*2002-10-10T17:00:00Z) is
describing =GabeW*resume and not
job.
The version metadata
in this case actually describes the immediately preceding segment "resume".
Although it just explains "resume", this in turn means that it is describing
"=GabeW*resume".
What is the problem
of this approach?
Nat
From:
Drummond Reed [mailto:]
Sent: Thursday, January 12, 2006 12:30
PM
To: 'Schleiff, Marty';
'Wachob, Gabe';
Subject: RE: [xri] Feedback requested
on terms used in Metadata spec
Do not listen to
that man behind the giant aluminum curtain at Boeing. Those questions he
keeps asking just happen to have about 30 years of thought and experience
behind them and he has completely resculpted the contour of XRI metadata
because he has asked the hard questions long enough and insisted on clear,
clean, even answers with little (preferably no)
ambiguity.
Gabe, here's an
answer your question about the application of the RDF S-P-O pattern (that's
subject-predicate-object for anyone who's not an RDF disciple). As Marty
explained, the solution we realized for making XRI metadata both simple and
unambiguous was by including the subject (the identifier being described) as
part of the cross-reference.
For example, if we
wanted to express that the identifier "pays" was the French word and not the
English word, the S-P-O triple would be:
Subject =
"pays"
Predicate =
"$l"
Object =
"fr"
…with the resulting
XRI being…
$l*fr*pays
…which when used as
a cross-reference in the context of another resource might be something
like…
xri://xri.example.com/dictionary/($l*fr*pays)/defintion.html
What threw off our
analysis of the underlying pattern being the S-P-O pattern was the fact that
the very simple XRI metadata cross-references we have been using for quite a
while actually fit this pattern even though they were only two "levels"
deep. Example:
$v*2.0
…which when used in
context (to choose a particular very real example from the XRI Resolution
2.0 spec) would be…
xri://$res*local*($v*2.0)
In this use of XRI
metadata, the identifier "$v" directly describes the identifier "2.0". In
RDF terms, what we realized was that this was just like the metadata in the
following XML snippet:
<strong>car</strong>
If you analyze this
tag from an RDF perspective, what you get is:
Subject =
"car"
Predicate =
fontstyle (implicit)
Object =
"strong"
In other words,
it's implicit in the semantics of the tag <strong> that it's a font
style. You could make this much more explicit as
follows:
<font style="strong">car</font>
Marty and I
realized that $v and $d both followed this implicit predicate pattern. So
"$v*2.0" from an S-P-O perspective is:
Subject =
"2.0"
Predicate =
$v
Object = version
number (implicit)
And
"$d*2002-10-10T17:00:00Z" from an S-P-O perspective would
be:
Subject =
"2002-10-10T17:00:00Z "
Predicate =
$d
Object = XML
datetime (implicit)
Marty then
suggested that $v and $d, besides their "implicit" numeric version and XML
datetime formats, respectively, could also have other formats defined
explicitly without conflicting with the implicit default.
Examples:
$v*alpha*b.e.c
Subject =
"b.e.c"
Predicate =
$v
Object = "alpha"
(explicit)
$d*year*2005
Subject =
"2005"
Predicate =
$d
Object = "year"
(explicit)
So (I realize this
is a very long answer to your question), the S-P-O pattern applies strictly
to the identifier that is the subject of the cross-reference, i.e., the
final subsegment of the cross-reference
(ALWAYS).
What it ducks is
the question of what the entire XRI metadata cross-reference describes – if
it does describe anything explicitly. In other words, under the above use of
the S-P-O pattern, the S-P-O only operates within the XRI metadata
cross-reference. The mere inclusion of an XRI metadata cross-reference in an
XRI does not explicitly tell you what it
describes.
Marty and I did
discuss a way to make that ambiguous, which again would be by using
cross-references. For example, in your question about whether the date
cross-reference in…
=GabeW*resume*($d*2002-10-10T17:00:00Z)*job
...describes your
resume or your job, one easy way to make this unambigous
is…
=GabeW*(resume*($d*2002-10-10T17:00:00Z))*job
=GabeW*resume*(($d*2002-10-10T17:00:00Z)*job)
It sure is
unambiguous to me what describes what in these
identifiers.
However, other than
suggesting/specifying the use of cross-references when you really want to
make it unambiguous what a XRI metadata cross-reference refers to, I'm in
favor of just tightly defining the XRI metadata cross-reference syntax and
letting identifier authorities use these within other XRIs as
needed.
Whatchathink?
=Drummond
From:
Schleiff, Marty [mailto:]
Sent: Wednesday, January 11, 2006 4:57
PM
To: Wachob, Gabe;
Drummond Reed;
Subject: RE: [xri] Feedback requested
on terms used in Metadata spec
Hi Gabe (&
All),
Now you're asking
me really hard questions. I think you need to understand that when Drummond
and I work together, it's mostly him doing the work. I have three unofficial
roles in the collaboration: 1) repeatedly ask stupid questions about a
particular concept until Drummond gets enough practice answering
in various ways, and can figure out the best way to describe it in a spec;
2) think up bizarre use cases to test out our ideas; and 3) continually
pester him and try to convince him that there are some places where an xref
doesn't make sense. For good answers, I think we'll have to wait for
Drummond to chime in.
I'm apparently
guilty of trying to constrain the specs too much. I don't like the concept
of it being up to the issuer to decide how to interpret the target of the
metadata. In and XRI containing ".../pays/pays/(l*fr)/pays/pays/...", to
which part(s) should the metadata apply? I.e., which part(s) should have
French pronunciation? The ambiguity drove us to putting it into the xref,
e.g., ".../pays/pays/($l*fr*pays)/pays..."
Your "left" /
"right" idea is an interesting approach we hadn't thought of (at least I
hadn't thought of it - maybe Drummond had).
; CISSP
Associate Technical Fellow -
Cyber Identity Specialist
Computing Security
Infrastructure
(425) 957-5667
From:
Wachob, Gabe [mailto:]
Sent: Wednesday, January 11, 2006 4:29
PM
To: Schleiff, Marty;
Drummond Reed;
Subject: RE: [xri] Feedback requested
on terms used in Metadata spec
Marty-
Are you saying that
metadata XREFs should have a way of saying "the thing identified to the left
of me" vs. "the thing identified to the right of me" ? So, in the pattern
of:
xri-metadata
= "$" predicate [ “*” object ] “*” subject
you might
have:
=GabeW*resume*($v*left*1.2)
-- indicating version 1.2 of my resume
vs.
=GabeW*resume*($v*right*2002-10-10T17:00:00Z)*job --
indicating my job as of 10/10/02?
I guess I'm
confused about the
concept of having a *choice* about what the metadata applies to.. I don't
quite understand how/why these metadata xrefs "apply" to parts of the XRI.
In that sense, I guess I'm saying that I don't understand how the subject is
*part* of an XRI. It would seem to me that the subject has to be explicit if
you are to have the Subject-Predicate-Object model.
Can we state
succinctly what it means when such a S-P-O triple appears in an XRI? What
inference do we draw by its mere presence? Isn't it just a convenient way to
qualify everything to the right of the metadata XREF, and nothing more?
-Gabe
From:
Schleiff, Marty [mailto:]
Sent: Wednesday, January 11, 2006
4:19 PM
To: Wachob, Gabe;
Drummond Reed;
Subject: RE: [xri] Feedback requested
on terms used in Metadata spec
Hi Gabe (&
All),
Drummond and I
have discussed/debated at length how to express the portion of an XRI to
which metadata applies. We determined that the only way to clearly
associate metadata with the intended subject of the metadata is to include
the subject and metadata within the same xref. How metadata
associates with portions of the XRI outside the metadata xref is up to the
XRI issuer. This is one of several concepts for which we're interested in
reactions from the rest of the TC. There are other issues, but rather than
point them out, I'll be interested to see if you recognize them on your
own.
;
CISSP
Associate Technical Fellow -
Cyber Identity Specialist
Computing Security
Infrastructure
(425) 957-5667
From:
Wachob, Gabe [mailto:]
Sent: Wednesday, January 11, 2006
12:54 PM
To: Drummond
Reed;
Subject: RE: [xri] Feedback requested
on terms used in Metadata spec
I guess I'm
partial to the RDF-mindset, but I'm thinking that it is an odd fit to make
that tight a connection to the S-P-O model since its not clear what the
actual *subject* is in all cases - to wit, isn't the subject the thing
outside the metadata cross-reference? Doesn't the Metadata XREF explicitly
describe/refer to something *outside* the metata XREF?
If we *could*
mesh this with RDF concepts, that'd would be
interesting.
Otherwise, I
don't have a strong preference between the other four items. They all seem
pretty isomorphic to me, without having thought about this very deeply.
-Gabe
From:
Drummond Reed [mailto:]
Sent: Wednesday, January 11, 2006
11:45 AM
To:
Subject: [xri] Feedback requested
on terms used in Metadata spec
I'm happy to report that Marty and I, after a
series of in-depth work sessions (abetted by Dave McAlpin when he's been
in town), believe we have wrestled the metadata dragon most of the way
to the ground.
The "dragon" is a tighter, more consistent ABNF
for all forms of XRI metadata as well as a much cleaner set of rules
about what it describes.
Without going into all the gory detail, what XRI
Metadata 2.0 Working Draft 08 will recommend is a very simple ABNF for
"tagging" an identifier with XRI metadata, which can then be used as a
cross-reference inside another XRI. The important clarification we will
be making is that this metadata only describes the "subject" identifier
(the identifier being described, to borrow term from RDF). For example,
in the XRI…
xri://xri.example.com/some/filename*($v*2.3)
…the metadata "$v" only describes the identifier
"2.3". It tells you it’s a version number. That's it. From the
identifier above, it would be a pretty obvious conclusion that the
identifier authority intended the cross-reference "($v*2.3)" to identify
a version namespace for the resource identifier by "filename". However
in the following XRI…
xri://xri.example.com/some/filename*($v*2.3)*anotherfile
…it may not be quite as clear – does the
identifier "($v*2.3)" create a version namespace for "filename" or for
"anotherfile"?
The answer is: that's up to the identifier
authority and out of scope for the XRI Metadata spec. The scope of the
Metadata spec is limited to defining well-known semantics and syntax for
a limited set of broadly useful identifier metadata (versions, dates,
languages, types, and annotations).
With that explained, here's what we'd like
feedback on: the semantics of the actual production names used in the
ABNF – which (per our experience with XRI syntax) we'd like to match up
with the terms used in the text of the Metadata spec itself.
Following are four "versions" of the ABNF that
are all identical structurally but different in the production names for
the first two of the three productions in the proposed syntax. (Marty
and I both like the term "subject" for the third component -- the
identifier being described -- since this is consistent with RDF and SAML
and other similar uses.)
We'd just like to know which of these (if any)
are preferred by other members of the TC, since semantics is not
something that can be determined by fiat. Please send a reply email to
the list with a comment about your preference if you have one (or a
different suggestion if you feel something else altogether would work
better).
Thanks,
=Drummond and Marty
Example 1 ("tag"
wording)
xri-metadata
= "$" metadata-tag [ “*” metadata-tag-value ] “*” subject
metadata-tag
= ( alpha / xref )
metadata-tag-value
= ( xri-subseg / xref )
subject
= ( xri-subseg / xref )
Example 2 ("attribute"
wording)
xri-metadata = "$" attribute [ “*”
attribute-value ] “*” subject
attribute = (
alpha / xref )
attribute-value = ( xri-subseg / xref
)
subject
= ( xri-subseg / xref )
Example 3 ("property"
wording)
xri-metadata = "$" property [ “*”
property-value ] “*” subject
property = (
alpha / xref )
property-value = ( xri-subseg / xref
)
subject
= ( xri-subseg / xref )
Example 4 ("RDF"
wording)
xri-metadata = "$" predicate [ “*”
object ] “*” subject
predicate = (
alpha / xref )
object
= ( xri-subseg / xref )
subject
= ( xri-subseg / xref )
Examples of the five types of XRI
metadata:
($l*fr*pays)
($t*ces*
john%20henry%20doe)
($v*2.3)
($d*2002-10-10T17:00:00Z)
($-*some.comment.here)
How these examples parse to the
ABNF above:
First
production
Second
production
Subject
$l
*fr
*pays
$t
*ces
*john%20henry%20doe
$v
*number (default – can be
omitted)
*2.3
$d
*XMLdatetime (default – can be
omitted)
*2002-10-10T17:00:00Z
$-
*string (default – can be
omitted)
*some.comment.here