Looking at some of the content over xmas decided to update the URI resolver to return content when a property without a resource name was asked for – returning all resources that have or refer to that property. Looking at other LoD Datasets tho this isn’t the norm and the Ontology definition for the property should be returned. In effect the namespace declaration should be resolved to an Ontology definition.
Theres something spooky bad about all this too, this 303 business. Why should a client of a LoD dataset care to differentiate between the name for something, an idea, and the address of the information that describes it ? Why have a 303 wasting all that bandwidth ?
Why not dynamically resolve this within the resolver itself, like all web apps do – having an url like http://uoccou.something.def/resource/something can be resolved internally to anything I choose, or cause some behaviour in code like a call to a database where the descriptive information can be gathered from. Once this is done, the information can be returned via whatever content negotiation needs to occur.
The important thing is that different aspects of the same thing have different addresses/URIs and can be addressed individually if required.
The address for the thing that identifies something should be different than
- the address that is the description of that something – a physical newspaper page,
- which is different from a resource describing that newspaper page – (copyright, owner, location etc),
- which is different from a resource pointed to by that description (a pointer to something describing the content of that page) – a semantic resource on server X, part of archive set Y,
- which is different from a description of that description -inside front cover, news section,
- which is different from the description itself – col1-8, stories 1-15, figures 1-3, photos 1-5).
And then you get into address for stories, paragraphs, bylines, slugs and so on. But to get from the first address identifiying the concept-in-context, to what a human would commonly call the “thing” they’re interested in takes a bunch of steps. Does a machine doing the same thing care in the same way ? Does the person that made the software that drives the process on the machine that makes the call to the top level URI care ? Should the default behaviour be defined for the top level URI and the intermediate ones be left to interested parties that make a specific call ?
Once the logical separation is done the physical thing can happen if needs be but it doesnt need to happen – it may make good architectural sense in some cases to have physically separated services for resolution, identification, and description but in others it may not. Spinning a useragent around chasing 303s and so on diminishes performance (or UI responsiveness) and