<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet href="/wikid/docs/xsl/mwCollections/CollectionRegistryFramework/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:CollectionRegistryFramework:RfaFaq</srwIdentifier>
<collectionURI>info:sid/localhost:CollectionRegistryFramework</collectionURI>
<repository-identifier>CollectionRegistryFramework</repository-identifier>
<srwURL>http://alcme.oclc.org:80/wikid/search/WikiDb.localhost</srwURL>
<local-identifier>RfaFaq</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:80/wikid/raw/info:sid/localhost:CollectionSimpleSchemas:config.xsd">
<repositoryName>Registry Framework</repositoryName>
<description>Information about the Registry Framework</description>
<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>3huo4y</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:CollectionRegistryFramework:RfaFaq</wr:refID>
<wr:refIDPrefix/>
<wr:userName>anonymous</wr:userName>
<wr:collection>CollectionRegistryFramework</wr:collection>
<wr:relativePath>2007/02/16/16</wr:relativePath>
<wr:fullRefID>inf_3asid_2flocalhost_3aCollectionRegistryFramework_3aRfaFaq_5f20070216162407276</wr:fullRefID>
<wr:mimeType>text/xml</wr:mimeType>
<wr:sort>CollectionRegistryFramework:RfaFaq</wr:sort>
<wr:dateCreated>2007-02-15</wr:dateCreated>
<wr:datestamp>2007-02-16</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:CollectionRegistryFramework:RfaFaq"</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>2007-02-16</datestamp>
<!--
This is the URL for the content
-->
<contentURL>http://alcme.oclc.org:80/wikid/docs/WikiRepository/2007/02/16/16/inf_3asid_2flocalhost_3aCollectionRegistryFramework_3aRfaFaq_5f20070216162407276</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>= Registry Framework FAQ =

== What is the Registry Framework? ==

The Registry Framework is a customizable and extensible platform for managing arbitrary collections of items online.

== So what you are saying is that the registry architecture is basically a generic web app framework? (A framework that internally uses the openURL and SRW standards?) ==

Let me put a slightly different spin on it. Think of OpenURL as the generic app framework. There are no services implied at this level. In contrast, the registry architecture is a set of generic collection-based web services built on this generic framework. These generic services assume SRW as the database abstraction layer.

== If another application is using the registry as basically a web service to get some data that it is going to format and display itself, is this still a good fit for the registry architecture? ==

Some services in the registry framework are geared towards automated clients, and other services are geared towards humans (esp. browsers). Many are designed to serve both purposes by delivering XML+XSL to clients. The intent of the registry framework is to provide a generic set of services that can provide 50-80% of the functionality needed to manage arbitrary collections of items online. It’s certainly possible to re-implement some of this functionality in a parallel framework, but this would tend to undermine the promise of commonality and reusability that has attracted management’s attention.

== What are the benefits over another web service framework? Is it the fact that it does use standards? ==

In general, such a set of services probably could have been implemented using almost any framework. It’s worth noting, though, that just because developers use this or that framework doesn’t mean they’re building reusable systems. In that sense, it’s not the framework that’s the key innovation here, it’s the data models and set of services we’re providing.

At a superficial level, the reason this was developed using the OpenURL framework is because it was an evolution of my research and involvement with that standard. More substantively, the OpenURL standard provides an intuitive and comprehensive set of abstractions for how to represent and implement interoperable web services. Of particular interests is the ability to decouple a service implementation from the request structure (SOAP, REST, XML-RPC, etc.) The appeal to developers is that you can take some arbitrary bit of business logic, add a thin OpenURL wrapper, and drop it on the classpath to make it available as a new web service.

Last but not least, OpenURL is a web service standard that the community will expect us to support going forward. It will be easier to satisfy these expectations if OpenURL is integral to our systems rather than tacked on as an after-thought. As the community develops new service standards (e.g. OAI-PMH), it should be possible to download a new open-source jar file containing the new set of services, and simply drop them onto the classpath to have them integrated into our systems.

== What if our database access does not fit SRW very well? (Meaning, what If we are doing only relational db type searches? Does CQL handle this very well?) ==

The key requirement of the registry framework is that it must be possible to represent the data as a collection of discrete identifiable items. This isn’t always possible, in which case the registry framework isn’t an appropriate solution (although the OpenURL framework probably would be). OTOH, we build a lot of custom applications against custom relational databases that could easily fit into the model given a little bit of fore-thought. The institution registry is a case in point.

Assuming that the data can be represented as items in a collection, SRW/CQL should be adequate for almost any need. For those rare cases where nothing less than SQL will do, the framework can easily be extended to support it from custom services.</raw>
</record>
</record>
</content>
<displayContent>
<html xmlns="http://www.w3.org/1999/xhtml">
<body><h1> Registry Framework FAQ </h1><p></p>
<h2> What is the Registry Framework? </h2><p></p>
The Registry Framework is a customizable and extensible platform for managing arbitrary collections of items online.<p></p>
<h2> So what you are saying is that the registry architecture is basically a generic web app framework? (A framework that internally uses the openURL and SRW standards?) </h2><p></p>
Let me put a slightly different spin on it. Think of OpenURL as the generic app framework. There are no services implied at this level. In contrast, the registry architecture is a set of generic collection-based web services built on this generic framework. These generic services assume SRW as the database abstraction layer.<p></p>
<h2> If another application is using the registry as basically a web service to get some data that it is going to format and display itself, is this still a good fit for the registry architecture? </h2><p></p>
Some services in the registry framework are geared towards automated clients, and other services are geared towards humans (esp. browsers). Many are designed to serve both purposes by delivering XML+XSL to clients. The intent of the registry framework is to provide a generic set of services that can provide 50-80% of the functionality needed to manage arbitrary collections of items online. It’s certainly possible to re-implement some of this functionality in a parallel framework, but this would tend to undermine the promise of commonality and reusability that has attracted management’s attention.<p></p>
<h2> What are the benefits over another web service framework? Is it the fact that it does use standards? </h2><p></p>
In general, such a set of services probably could have been implemented using almost any framework. It’s worth noting, though, that just because developers use this or that framework doesn’t mean they’re building reusable systems. In that sense, it’s not the framework that’s the key innovation here, it’s the data models and set of services we’re providing.<p></p>
At a superficial level, the reason this was developed using the OpenURL framework is because it was an evolution of my research and involvement with that standard. More substantively, the OpenURL standard provides an intuitive and comprehensive set of abstractions for how to represent and implement interoperable web services. Of particular interests is the ability to decouple a service implementation from the request structure (SOAP, REST, XML-RPC, etc.) The appeal to developers is that you can take some arbitrary bit of business logic, add a thin OpenURL wrapper, and drop it on the classpath to make it available as a new web service.<p></p>
Last but not least, OpenURL is a web service standard that the community will expect us to support going forward. It will be easier to satisfy these expectations if OpenURL is integral to our systems rather than tacked on as an after-thought. As the community develops new service standards (e.g. OAI-PMH), it should be possible to download a new open-source jar file containing the new set of services, and simply drop them onto the classpath to have them integrated into our systems.<p></p>
<h2> What if our database access does not fit SRW very well? (Meaning, what If we are doing only relational db type searches? Does CQL handle this very well?) </h2><p></p>
The key requirement of the registry framework is that it must be possible to represent the data as a collection of discrete identifiable items. This isn’t always possible, in which case the registry framework isn’t an appropriate solution (although the OpenURL framework probably would be). OTOH, we build a lot of custom applications against custom relational databases that could easily fit into the model given a little bit of fore-thought. The institution registry is a case in point.<p></p>
Assuming that the data can be represented as items in a collection, SRW/CQL should be adequate for almost any need. For those rare cases where nothing less than SQL will do, the framework can easily be extended to support it from custom services.</body>
</html>
</displayContent>
</resource>
