Interoperable Web System Architecture - Registry Extension (IWSA-Reg)

Jeffrey A. Young
2006-07-24
This revision dated 2006-08-18, Added to docmgr V1.1

Overview

The Interoperable Web System Architecture - Registry Extension (IWSA-Reg) is a an extension of the Interoperable Web System Architecture (IWSA) that addes support for Systems that represent one or more Collections of Items.

IWSA-Reg Definitions

The following terms, when italicized in this standard, have the meanings indicated here.

Term Definition
AdminData This represents administrative information about an Item. Typically, this might include things like the URI of the person or process that added the item, dateCreated, dateModified, versionID, etc. Note! Some services described below will only work if and only if their requisite elements can be found here. For example, the "history" service requires "versionID" and "currentFlag" elements to appear in the AdminData. The oai service requires a "dateModified" element. This standard doesn't dictate which elements are required, so the XML Schema allows for one or more <description> elements that can contain the specific information needed to perform the supported services.
BaseURL

This URL identifies and locates an IWSA installation on the web.

Collection This represents a set of Items.
CollectionLabel A Label for a Collection (unique within a Registry). Note! The CollectionLabels "Collections" and "WebServices" are reserved for internal purposes.
ComponentResourceLabel

This Label is used to identify component IWSA Resources within a System. Note, however, that query strings could be used instead of, or in conjunction with, ComponentResourceLabels for this purpose.

Content An array of bytes along with a ContentType value.
ContentType IANA | MIME Media Types used to define the meaning of the Content bytes.
GlobalSystemLabel

An optional globally-unique Label for a System that can be used to facilitate interoperability across BaseURLs. If used, this label MUST be registered in the IWSA System Registry. Note! the Labels "webservices" and "localhost" are reserved for the purposes described below.

Identifier (ID) This term is ambiguous, so it is generally avoided in this standard in favor of the terms Label and URI.
Item This represents an abstract amalgam of three components: ItemLabel, Content, and AdminData.
ItemLabel A persistent Label for an Item (unique within the Collection).
IWSA Resource

A Resource is an abstract entity known to, or discoverable by, an IWSA System. Resources can be accessed by performing a Service against it to produce a concrete representation.

Label

Labels are Unicode strings that correspond to selected Identifiable IWSA-Reg Resources. Labels are more convenient than the corresponding URIs when combined together in the patterns described below. One or more Collections can be used to map Labels to the corresponding URIs if necessary. Note! Only ItemLabels are allowed to contain the '/' character. Otherwise applications will have trouble parsing the patterns described below.

LocalSystemLabel

A locally-unique Label for a System. LocalSystemLabels are differentiated from GlobalSystemLabels to give IWSA installations some leeway in the makeup of their URL patterns. Note! the label "webservices" and "localhost" are reserved for the purposes described below.

Registry A Registry is System that represents one or more Collections.
Service A Service is a modular function that can be applied to an abstract IWSA Resource to generate a concrete result.
ServiceLabel

A local Label for a Service. Each Service also has a globally-unique URI representation that can be used to identify Services across Systems. The use of local Labels gives IWSA installations some leeway in the makeup of their URL patterns.

System System is roughly equivalent to a Servlet webapp. Multiple systems can exist on a server in the same sense and for the same reasons that multiple webapps can exist on server. For purposes of this architecture, however, the implementation mechanisms used to differentiate systems are less important than the general concept.
URI Info URIs (viz. info:iwsa/) are used to identify all IWSA Resources.

IWSA-Reg Component Resources

The IWSA specification defines ComponentResourceLabels to represent Resources contained within a System. Within IWSA-Reg Systems, this Label is defined as as {CollectionLabel}/{ItemLabel} to represent Items within Collections that are known to the Registry.

Identifiable IWSA-Reg Resources

Info URIs are used in this standard to identify the following resources available in a Registry. Note, however, that these URIs refer to resources in the abstract sense. If you want something concrete related to the resource (e.g. Content or AdminData), you must perform a service against the resource to obtain it.

Service URL Patterns

These general-purpose URL patterns are defined by the standard to facilitate ease of use and network interoperability. Note, however, that they are optional. Registry installations are free to ignore them in favor their own custom Service URL patterns.

Web Services Pattern

This pattern can be used to invoke web services against Identifiable IWSA-Reg Resources).

Resource URL Pattern Analysis
Registry {BaseURL}/webservices/{LocalSystemLabel}/{ServiceLabel} Performs a service against the specified Registry.
Collection {BaseURL}/webservices/{LocalSystemLabel}/{ServiceLabel}/{CollectionLabel} Performs a service against the specified Collection.
Item {BaseURL}/webservices/{LocalSystemLabel}/{ServiceLabel}/{CollectionLabel}/{ItemLabel} Performs a service against the specified Item.

User Inteface Pattern

This pattern is an alias for the Web Services Pattern that assumes a ServiceLabel of "ui".

Resource URL Pattern Analysis
Registry {BaseURL}/registry Performs a service against the specified Registry.
Collection {BaseURL}/registry/{CollectionLabel} Performs a service against the specified Collection.
Item {BaseURL}/registry/{CollectionLabel}/{ItemLabel} Performs a service against the specified Item.

Custom Service URLs

In general the WebService pattern described above can and should be used for any miscellaneous ServiceLabel and a proliferation of alternative URL patterns is generally discouraged.

The main justification for wanting to create a custom service URL pattern is to provide backward compatibility with legacy URL patterns. Even in this case, though, the registry administrator should consider supporting the pattern listed above for the sake of interoperability with generic clients.

Generic Services

The following Services have been identified as being generally applicable to any conceivable Registry.

Registry-level ServiceLabels

Note! If the ServiceLabel is missing from this pattern, the system should perform an HTTP redirect to the ui ServiceLabel by default. This is the only level at which we can recover from a missing ServiceLabel.

{BaseURL}/webservices/{LocalSystemLabel}/{ServiceLabel}
Example: http://worldcat.org/webservices/registry/content

Collection-level ServiceLabels

{BaseURL}/webservices/{LocalSystemLabel}/{ServiceLabel}/{CollectionLabel}
Example: http://worldcat.org/webservices/registry/oai/institutions?verb=Identify

Item-level ServiceLabels

{BaseURL}/webservices/{LocalSystemLabel}/{ServiceLabel}/{CollectionLabel}/{ItemLabel}
Example: http://worldcat.org/webservices/registry/edit/institutions/123

Custom Services

A Registry administrator can add custom services as needed at any of the Identifiable IWSA-Reg Resource levels. Custom services can also be created to apply to individual Collections in a Registry. For example, a PURL Collection may want to add a "redirect" service. Also note that applications may want to create custom CQL context sets to support their custom services.


SRU Implementation Details

This IWSA-Reg standard does not require the use of SRU, but these implementation details are included for the sake of illustration.

CQL Context Sets

These CQL context sets (SRU) are needed to support the services listed above.

Note that additional CQL context sets can be added to support custom services that require more discrete access to the Content.

Short Name URI Reference Analysis
cql info:srw/cql-context-set/1/cql-v1.1 CQL Context Set This is a general purpose set and isn't used by any of the services listed above. It is included here because it will be familiar and useful to arbitrary SRU clients.
dc info:srw/cql-context-set/1/dc-v1.1 Dublin Core Context Set This set can be used to index certain adminData elements as needed. The only required index is dc.identifier, which is used by the services listed above to identify Identifiable IWSA-Reg Resources. This index should be used in conjunction with the History Context Set to perform version restrictions as needed.
hist info:oclc/cql-context-set/1/hist-v1.0 History Context Set This set supports access to historical items in a collection.

SRU SchemaInfo

The SRU database needs to deliver these XML Schemas related to Identifiable IWSA-Reg Resources in order to support the services listed above.

Title Name URI Location
Registry Item Administrative Data AdminData info:iwsa/iwsaRegistry/xmlSchemas/AdminData http://purl.org/iwsaReg/content/xmlSchemas/adminData
Registry Item Content Content info:iwsa/iwsaRegistry/xmlSchemas/Content http://purl.org/iwsaReg/content/xmlSchemas/content