Proposal, a new class of Web Names

Hi Guys,

Please do read over the following and let me know what you think - might 
be somewhat of a different approach ->

[[[

Problem Statement and Background.

The Web has long since provided names as a way of referring to things, 
from time to time the specification of these names has had to be 
revised, in order to match their usage on the Web as it evolves.

With the rise of the Semantic Web, Media Fragments and Web Applications, 
the usage of these names, especially http names, has changed to become 
either inconsistent with the current URI specification or their usage is 
simply unspecified.

A side effect of this new usage, is that various communities have 
differing opinions on just what a URI can or does refer to, and on how 
those URIs can be used. This leads to tensions between communities which 
are trying to converge, and in the worst case threatens the evolution of 
those communities and their respective technologies.

The web communities using these URIs share two common requirements, they 
need to use absolute URIs to refer to network accessible resources, and 
they require some form of indirect referencing, frequently turning to 
fragment identifiers for this purpose.

One of the most contended uses of URIs, is when they are used to refer 
to abstract concepts or things evoked by the processing of 
representations, for example:

  - A thing which is described within a representation, i.e. a person.
  - A particular application state or recomposable view provided by the 
application.
  - Some particular scene within a movie.

Contentions are usually particularly high when a URI of the absolute-URI 
form is used for this purpose.

In order to address this problem, it is suggested that a new class of 
Web Names is needed. A class which is disjoint with the current set of 
names (URIs/IRIs), fully compatible with those names, and which models 
existing naming conventions.


Proposal - Web Names.

Web Names provide a web friendly way of referring to things, each 
WebName is a 2-tuple comprising of a namespace and a name.

   WebName  = ( namespace , name )

The namespace part of a WebName takes the syntactic form of an 
absolute-IRI, the namespace typically refers to a network accessible 
resource.

Each namespace has an infinite pool of locally scoped references, within 
different contexts there often exists a need to expose one of those 
references, for example:
  - a reference to something which is described
  - a reference to a particular state or information view
  - a reference to a function or a variable
  - a reference to a particular time sequence and area within a video

The name part of a WebName provides a way to expose these indirect 
references, the name can take the syntactic form of the primary-ref (an 
empty string) or a reference (a string consisting of one or more 
characters), the name provides an anchor to refer to things named within 
a namespace.

WebNames have the following syntax:

   web-name     =  namespace local-name

   namespace    =  absolute-IRI

   local-name   =  [ "#" ] primary-ref / "#" reference

   primary-ref  =  0<ipchar>

   reference    =  1*( ipchar / "/" / "?" )


Since WebNames are 2-tuples and IRIs are strings, the value space of 
WebNames is completely disjoint with the value space of IRIs, however, 
the lexical form of each WebName is also a valid IRI, as such:

   IRI          =  http://example.com/foo/bar#baz1
                   \________________________/ \__/
                                   |           /
   WebName      =             ( namespace , name )

By sharing a lexical form which always produces a valid IRI, WebNames 
are fully compatible with the deployed web technologies, require no 
changes to be made, and are backwards compatible with existing IRIs 
which have been minted/used for the purpose of indirect referencing.

Due to WebNames being 2-tuples, they cannot be dereferenced, this serves 
to null and void many of the most complicated and contentious issues 
outlined earlier, WebNames have been designed in such a way so that 
communities can opt-in to using them and focus on converging their 
technologies rather than trying to answer unanswerable questions.

It is often the case that a network accessible resource is configured to 
provide information primarily about a single thing, for this purpose a 
WebName consisting of a namespace and a primary-ref can be used.

When the name part of a WebName is the primary-ref, then the hash ("#") 
is optional, such that the WebName:

   ( "http://example.com/foo/bar" , "" )

can be specified using either of the following lexical forms:

   http://example.com/foo/bar#
   http://example.com/foo/bar

and such that both those lexical forms encode the same WebName.

]]]

Still needs work, especially on the text, but I think that's enough to 
get across what I'm proposing in the meantime. Thoughts and feedback 
more than appreciated.

Best,

Nathan

Received on Monday, 14 February 2011 23:17:34 UTC