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: Small bug in XDI address ABNF


Markus gets the 2010 New Year's prize for noticing a small bug in our four-line ABNF for XDI addressing (below) while working on his new XDI Grapher application.
xdi-address     = xdi-subject [ "/" xdi-predicate [ "/"  xdi-object ] ]
xdi-subject = xri-segment
xdi-predicate = xri-segment
xdi-object = xri-segment
/ "/" [ xdi-address ]
The problem is that our ABNF assumed that every XRI segment was valid as a component of an XDI address. Markus pointed out that...
(+a/+b/+c/+d)
...is a valid XRI segment, but the XRI within this cross-reference is not a valid XDI address. Since XDI uses cross-references for reification, the contents of every cross-reference must itself be either a valid XDI address or a URI.

The fix is pretty easy - it just involves restricting xrefs to the rule above. The ABNF goes from 4 lines to 12. The following has been posted to the XDI RDF Graph Model spec wiki page.
xdi-address     = xdi-subject [ "/" xdi-predicate [ "/"  xdi-object ] ]
xdi-subject = xdi-segment
xdi-predicate = xdi-segment
xdi-object = xdi-segment
/ "/" [ xdi-address ]
xdi-segment = [ literal ] *xdi-subseg
xdi-subseg = global-subseg
/ local-subseg
/ xref
global-subseg = gcs-char [ local-subseg / xdi-ref / literal ]
local-subseg = lcs-char [ xdi-ref / literal ]
xdi-ref = "(" [ xdi-ref-value ] ")"
xdi-ref-value = xdi-address
/ iri
=Drummond


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