<?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:IdentifierResolver</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>IdentifierResolver</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>87bks7</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:IdentifierResolver</wr:refID>
<wr:refIDPrefix/>
<wr:userName>anonymous</wr:userName>
<wr:collection>CollectionWikiPages</wr:collection>
<wr:relativePath>2005/11/18/16</wr:relativePath>
<wr:fullRefID>inf_3asid_2flocalhost_3aCollectionWikiPages_3aIdentifierResolver_5f20051118160329217</wr:fullRefID>
<wr:mimeType>text/xml</wr:mimeType>
<wr:sort>CollectionWikiPages:IdentifierResolver</wr:sort>
<wr:dateCreated>2005-11-18</wr:dateCreated>
<wr:datestamp>2005-11-18</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:IdentifierResolver"</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-11-18</datestamp>
<!--
This is the URL for the content
-->
<contentURL>http://alcme.oclc.org:80/wikid/docs/WikiRepository/2005/11/18/16/inf_3asid_2flocalhost_3aCollectionWikiPages_3aIdentifierResolver_5f20051118160329217</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>= Identifier Resolver =

Here is an overview of OpenURL 1.0 as it relates to a proposed identifier resolver. You might want to skip ahead to the Identifier Resolver Example below and then refer back to the underlying principles afterward.

== OpenURL Principles ==

OpenURL 1.0 is a web-service API for performing context-sensitive services. The example below assumes a library patron reading a full-text article in FirstSearch and finding a citation that they want to pursue. The context of the request is encoded in a ContextObject that contains combinations of these six entity types:

	1.    Referent (required, non-repeatable): the referenced entity (e.g. a book)
	2.    Referring Entity (optional, non-repeatable): the entity that references the referent (e.g. a journal article that cites the referent book)
	3.    Requester (optional, non-repeatable): the entity performing the request (e.g. the end-user who clicks on the cited book link in a journal article)
	4.    Service Type (optional, repeatable): the type of service being requested (e.g. delivery of an online abstract or ILL for the cited book)
	5.    Resolver (optional, repeatable): The entity at which the request for service is being targeted (e.g. the end-user’s local SFX system)
	6.    Referrer (optional, repeatable): the entity that generated the ContextObject (e.g. FirstSearch)

OpenURL 1.0 allows each of these entities to be identified in various ways:

	1.    by URI: E.g. DOI, ISBN, OCLC#, etc.
	2.    by metadata E.g. MARC, Dublin Core, etc.
	3.    by private data (as negotiated between the referrer and the resolver)

There are other layers of abstraction (e.g. inline vs. by-value vs. by-reference and XML vs. key-encoded values, etc.), but for the sake of overview I will ignore them.

== Identifier Resolver Example ==

Here is an example of how OpenURL 1.0 can be used for the identifier resolver. Imagine that we have instcode OSU and we want to get various kinds of results, depending on the situation.

http://idresolver.oclc.org/openurl?rft_id=info:sid/oclc.org:instcode:OSU
 
The instcode referent (rft) is specified as a URI and no other context entities are given. In this case, our resolver would perform some default service, such as return an HTTP redirect to the home page for that institution or perhaps return an XML metadata record for it. If we want the service to return the instnum instead, we might add a service type (svc) to override the default:
 
http://idresolver.oclc.org/openurl?rft_id=info:sid/oclc.org:instcode:OSU&amp;svc_id=info:sid/oclc.org:svc_id:instnum
 
I hope people see the value of using URIs to specify entities (rft_id and svc_id), but if not we can always switch to “private data” entities (rft_dat and svc_dat) instead:
 
http://idresolver.oclc.org/openurl?rft_dat=instcode:OSU&amp;svc_dat=instnum
 
In some cases, we may want to provide different results depending on other types of context information (see the list of entity types in the principles above). In general, new services can be added to the OpenURL framework by implementing a simple Java interface. The business logic and ContextObject entity processing within these classes can be as simple or complex as necessary.</raw>
</record>
</record>
</content>
<displayContent>
<html xmlns="http://www.w3.org/1999/xhtml">
<body><h1> Identifier Resolver </h1><p></p>
Here is an overview of OpenURL 1.0 as it relates to a proposed identifier resolver. You might want to skip ahead to the Identifier Resolver Example below and then refer back to the underlying principles afterward.<p></p>
<h2> OpenURL Principles </h2><p></p>
OpenURL 1.0 is a web-service API for performing context-sensitive services. The example below assumes a library patron reading a full-text article in <a href="FirstSearch">FirstSearch</a> and finding a citation that they want to pursue. The context of the request is encoded in a <a href="ContextObject">ContextObject</a> that contains combinations of these six entity types:<p></p>
<ol>
<li>    Referent (required, non-repeatable): the referenced entity (e.g. a book)</li>
<li>    Referring Entity (optional, non-repeatable): the entity that references the referent (e.g. a journal article that cites the referent book)</li>
<li>    Requester (optional, non-repeatable): the entity performing the request (e.g. the end-user who clicks on the cited book link in a journal article)</li>
<li>    Service Type (optional, repeatable): the type of service being requested (e.g. delivery of an online abstract or ILL for the cited book)</li>
<li>    Resolver (optional, repeatable): The entity at which the request for service is being targeted (e.g. the end-user’s local SFX system)</li>
<li>    Referrer (optional, repeatable): the entity that generated the <a href="ContextObject">ContextObject</a> (e.g. <a href="FirstSearch">FirstSearch</a>)</li>
</ol>
<p></p>
OpenURL 1.0 allows each of these entities to be identified in various ways:<p></p>
<ol>
<li>    by URI: E.g. DOI, ISBN, OCLC#, etc.</li>
<li>    by metadata E.g. MARC, Dublin Core, etc.</li>
<li>    by private data (as negotiated between the referrer and the resolver)</li>
</ol>
<p></p>
There are other layers of abstraction (e.g. inline vs. by-value vs. by-reference and XML vs. key-encoded values, etc.), but for the sake of overview I will ignore them.<p></p>
<h2> Identifier Resolver Example </h2><p></p>
Here is an example of how OpenURL 1.0 can be used for the identifier resolver. Imagine that we have instcode OSU and we want to get various kinds of results, depending on the situation.<p></p>
<a href="http://idresolver.oclc.org/openurl?rft_id=info:sid/oclc.org:instcode:OSU">http://idresolver.oclc.org/openurl?rft_id=info:sid/oclc.org:instcode:OSU</a><p></p>
The instcode referent (rft) is specified as a URI and no other context entities are given. In this case, our resolver would perform some default service, such as return an HTTP redirect to the home page for that institution or perhaps return an XML metadata record for it. If we want the service to return the instnum instead, we might add a service type (svc) to override the default:<p></p>
<a href="http://idresolver.oclc.org/openurl?rft_id=info:sid/oclc.org:instcode:OSU&amp;svc_id=info:sid/oclc.org:svc_id:instnum">http://idresolver.oclc.org/openurl?rft_id=info:sid/oclc.org:instcode:OSU&amp;svc_id=info:sid/oclc.org:svc_id:instnum</a><p></p>
I hope people see the value of using URIs to specify entities (rft_id and svc_id), but if not we can always switch to “private data” entities (rft_dat and svc_dat) instead:<p></p>
<a href="http://idresolver.oclc.org/openurl?rft_dat=instcode:OSU&amp;svc_dat=instnum">http://idresolver.oclc.org/openurl?rft_dat=instcode:OSU&amp;svc_dat=instnum</a><p></p>
In some cases, we may want to provide different results depending on other types of context information (see the list of entity types in the principles above). In general, new services can be added to the OpenURL framework by implementing a simple Java interface. The business logic and <a href="ContextObject">ContextObject</a> entity processing within these classes can be as simple or complex as necessary.</body>
</html>
</displayContent>
</resource>
