<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet href="/wikid/docs/xsl/mwCollections/CollectionWikiPages/display.xsl" type="text/xsl"?>

<!--
This resource container holds the product of the resolution request
-->
<resource xmlns:config="info:sid/localhost:CollectionSimpleSchemas:config" xmlns:explain="http://explain.z3950.org/dtd/2.0/" xmlns:srw="http://www.loc.gov/zing/srw/" xmlns:wiki="info:sid/localhost:CollectionSimpleSchemas:wiki" xmlns:wr="http://errol.oclc.org/oai:xmlregistry.oclc.org:errol/WikiRepository" xmlns:xlink="http://www.w3.org/TR/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!--
This is an echo of the request information this stylesheet used to produce the resolution product
-->
<uri-context>
<srwIdentifier>info:sid/localhost:CollectionWikiPages:OpenUrlContextObjectGenerator</srwIdentifier>
<collectionURI>info:sid/localhost:CollectionWikiPages</collectionURI>
<repository-identifier>CollectionWikiPages</repository-identifier>
<srwURL>http://alcme.oclc.org:80/wikid/search/WikiDb.localhost</srwURL>
<local-identifier>OpenUrlContextObjectGenerator</local-identifier>
<action>display</action>
</uri-context>
<!--
This is the collection configuration record
-->
<record xmlns="info:sid/localhost:CollectionSimpleSchemas:config" xsi:schemaLocation="info:sid/localhost:CollectionSimpleSchemas:config http://alcme.oclc.org/metawiki/raw/info:sid/localhost:CollectionSimpleSchemas:config.xsd">
<repositoryName>Wiki Pages</repositoryName>
<localIdentifierType>userAssigned</localIdentifierType>
<adminEmail>mailto:jyoung@oclc.org</adminEmail>
<defaultXSL>no</defaultXSL>
<schemaURI recordPrefix="wiki">info:sid/localhost:CollectionSimpleSchemas:wiki</schemaURI>
<crosswalkSchemaURI recordPrefix="xhtml">info:sid/localhost:CollectionExternalSchemas:xhtml</crosswalkSchemaURI>
<defaultSchemaURI>info:sid/localhost:CollectionExternalSchemas:xhtml</defaultSchemaURI>
</record>
<!--
There is a local-identifier, so this URI must identify an item in a collection
-->
<!--
This is the searchRetrieveResponse for the item's Deposit record
-->
<content>
<searchRetrieveResponse xmlns="http://www.loc.gov/zing/srw/">
<version>1.1</version>
<numberOfRecords>1</numberOfRecords>
<resultSetId>yedhq3</resultSetId>
<resultSetIdleTime>300</resultSetIdleTime>
<records xmlns:ns1="http://www.loc.gov/zing/srw/">
<record>
<recordSchema>http://www.oclc.org/schemas/WikiRepository</recordSchema>
<recordPacking>xml</recordPacking>
<recordData>
<wr:Deposit xmlns="http://www.w3.org/TR/xhtml1/strict">
<wr:browserPath>http://alcme.oclc.org:80/wikid/docs/WikiRepository</wr:browserPath>
<wr:refID>info:sid/localhost:CollectionWikiPages:OpenUrlContextObjectGenerator</wr:refID>
<wr:refIDPrefix/>
<wr:userName>SomeBody</wr:userName>
<wr:collection>CollectionWikiPages</wr:collection>
<wr:relativePath>2005/08/01/10</wr:relativePath>
<wr:fullRefID>inf_3asid_2flocalhost_3aCollectionWikiPages_3aOpenUrlContextObjectGenerator_5f20050801103523313</wr:fullRefID>
<wr:mimeType>text/xml</wr:mimeType>
<wr:sort>CollectionWikiPages:OpenUrlContextObjectGenerator</wr:sort>
<wr:dateCreated>2005-08-01</wr:dateCreated>
<wr:datestamp>2005-08-01</wr:datestamp>
<wr:oldDate/>
</wr:Deposit>
</recordData>
<recordPosition>1</recordPosition>
</record>
</records>
<echoedSearchRetrieveRequest xmlns:ns2="http://www.loc.gov/zing/srw/">
<version>1.1</version>
<query>repos.hasDate = "hasdate" and oai.identifier exact "info:sid/localhost:CollectionWikiPages:OpenUrlContextObjectGenerator"</query>
<xQuery>
<ns3:searchClause xmlns:ns3="http://www.loc.gov/zing/cql/xcql/">
<ns3:index>cql.any</ns3:index>
<ns3:relation>
<ns3:value>=</ns3:value>
</ns3:relation>
<ns3:term>huh?</ns3:term>
</ns3:searchClause>
</xQuery>
<startRecord>1</startRecord>
<maximumRecords>1</maximumRecords>
<recordPacking>xml</recordPacking>
<recordSchema>default</recordSchema>
</echoedSearchRetrieveRequest>
</searchRetrieveResponse>
<!--
This is the datestamp for the Deposit
-->
<datestamp>2005-08-01</datestamp>
<!--
This is the URL for the content
-->
<contentURL>http://alcme.oclc.org:80/wikid/docs/WikiRepository/2005/08/01/10/inf_3asid_2flocalhost_3aCollectionWikiPages_3aOpenUrlContextObjectGenerator_5f20050801103523313</contentURL>
<!--
Here is the record content
-->
<record>
<record xmlns="info:sid/localhost:CollectionSimpleSchemas:wiki" xsi:schemaLocation="info:sid/localhost:CollectionSimpleSchemas:wiki http://alcme.oclc.org:80/wikid/raw/info:sid/localhost:CollectionSimpleSchemas:wiki.xsd">
<raw>= OpenURL 1.0 ContextObject Generator =
= Background =
Some folks on #code4lib expressed an interest in an OpenURL ContextObject Generator web service. After toying with some HTML forms and processor service derived from registered metadata formats (see the collections below), I realized that I don't really understand the problem that needs to be solved.

The best I can hope for with the processing service for these forms is to generate a KEV or XML OpenURL metadata-by-value "descriptor". Such a descriptor is only a fragment of an OpenURL ContextObject, however, and can be used to describe one of several kinds of OpenURL "entities":
* Referent
* Referring''''''Entity
* Requester
* Service''''''Type
* Resolver
* Referrer
Furthermore, metadata-by-value is only one form of descriptor. Here's the list of possibilities:
* metadata-by-value
* metadata-by-reference
* identifier
* private-data
The latter three are trivial in comparison to the first, but the permutations of entities and descriptors, not to mention the repeatability of each makes an easy-to-use general-purpose ContextObject generator service unlikely.

I ''do'' think there things that can be done to facilitate application-specific needs, though. I can create a REST-style web service that will accept '''any''' kind of input and produce a KEV or XML ContextObject, as long as I know ahead of time what to expect. Each such application can be assigned a URI that would get passed in to the service and used as the key to an XSLT-based solution.

I can create this as a WikiD collection, which means this service can be used from the WikiD demo server (http://alcme.oclc.org/wikid/''''''), or downloaded and run locally.

If you're interested, you can contact me at mailto:jyoung@oclc.org for details.

== Collections ==
These collections contain copies of MTX and XSD metadata constraints in the OpenURL Registry (http://www.openurl.info/registry/''''''). These constraints are then transformed into XHTML forms using XSLT. The "action" for these forms is a web-service that produces ContextObjects. Note that this ContextObject generator service can be used independently from the forms that are available here.

* CollectionOpenUrlMetadataFormatsMtx'''''': Produces a KEV ContextObject containing a single metadata-by-value entity (of the selected type). These forms don't support the full capacity of KEV ContextObjects, but they might be adequate for basic situations.
* CollectionOpenUrlMetadataFormatsXsd'''''': I only got as far as form generation for XML ContextObjects. This is where the permutations and repeatability really got out of hand. Since it is impractical to create general-purpose forms, it is difficult to imagine the general-purpose arguments that would be sent to the processor service to transform into ContextObjects.</raw>
</record>
</record>
</content>
<displayContent>
<html xmlns="http://www.w3.org/1999/xhtml">
<body><h1> OpenURL 1.0 ContextObject Generator </h1>
<h1> Background </h1>
Some folks on #code4lib expressed an interest in an OpenURL <a href="ContextObject">ContextObject</a> Generator web service. After toying with some HTML forms and processor service derived from registered metadata formats (see the collections below), I realized that I don't really understand the problem that needs to be solved.<p></p>
The best I can hope for with the processing service for these forms is to generate a KEV or XML OpenURL metadata-by-value &quot;descriptor&quot;. Such a descriptor is only a fragment of an OpenURL <a href="ContextObject">ContextObject</a>, however, and can be used to describe one of several kinds of OpenURL &quot;entities&quot;:
<ul>
<li> Referent</li>
<li> ReferringEntity</li>
<li> Requester</li>
<li> ServiceType</li>
<li> Resolver</li>
<li> Referrer</li>
</ul>

Furthermore, metadata-by-value is only one form of descriptor. Here's the list of possibilities:
<ul>
<li> metadata-by-value</li>
<li> metadata-by-reference</li>
<li> identifier</li>
<li> private-data</li>
</ul>

The latter three are trivial in comparison to the first, but the permutations of entities and descriptors, not to mention the repeatability of each makes an easy-to-use general-purpose <a href="ContextObject">ContextObject</a> generator service unlikely.<p></p>
I <em>do</em> think there things that can be done to facilitate application-specific needs, though. I can create a REST-style web service that will accept <strong>any</strong> kind of input and produce a KEV or XML <a href="ContextObject">ContextObject</a>, as long as I know ahead of time what to expect. Each such application can be assigned a URI that would get passed in to the service and used as the key to an XSLT-based solution.<p></p>
I can create this as a <a href="WikiD">WikiD</a> collection, which means this service can be used from the <a href="WikiD">WikiD</a> demo server (<a href="http://alcme.oclc.org/wikid/">http://alcme.oclc.org/wikid/</a>), or downloaded and run locally.<p></p>
If you're interested, you can contact me at <a href="mailto:jyoung@oclc.org">mailto:jyoung@oclc.org</a> for details.<p></p>
<h2> Collections </h2>
These collections contain copies of MTX and XSD metadata constraints in the OpenURL Registry (<a href="http://www.openurl.info/registry/">http://www.openurl.info/registry/</a>). These constraints are then transformed into XHTML forms using XSLT. The &quot;action&quot; for these forms is a web-service that produces <a href="ContextObjects">ContextObjects</a>. Note that this <a href="ContextObject">ContextObject</a> generator service can be used independently from the forms that are available here.<p></p>
<ul>
<li> <a href="./CollectionOpenUrlMetadataFormatsMtx">CollectionOpenUrlMetadataFormatsMtx</a>: Produces a KEV <a href="ContextObject">ContextObject</a> containing a single metadata-by-value entity (of the selected type). These forms don't support the full capacity of KEV <a href="ContextObjects">ContextObjects</a>, but they might be adequate for basic situations.</li>
<li> <a href="./CollectionOpenUrlMetadataFormatsXsd">CollectionOpenUrlMetadataFormatsXsd</a>: I only got as far as form generation for XML <a href="ContextObjects">ContextObjects</a>. This is where the permutations and repeatability really got out of hand. Since it is impractical to create general-purpose forms, it is difficult to imagine the general-purpose arguments that would be sent to the processor service to transform into <a href="ContextObjects">ContextObjects</a>.</li>
</ul>
</body>
</html>
</displayContent>
</resource>
