![Page 1: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/1.jpg)
Building Interoperable Digital Libraries:
A Practical Guide to creating Open Archives
Hussein Suleman, [email protected] Library Research Laboratory
Virginia Tech
![Page 2: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/2.jpg)
JCDL 2002 Slide 2
1. Introduction
What is the OAI?MotivationGeneral System StrategyHistoryCase study: NDLTD
![Page 3: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/3.jpg)
JCDL 2002 Slide 3
1.1. What is the OAI ?
What is the Open Archives Initiative (OAI)?Organization dedicated to solving problems of digital library interoperability by defining simple protocols, most recently for the exchange of metadata.
What is the Protocol for Metadata Harvesting?Protocol to transfer metadata from a source archive to a destination archive
![Page 4: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/4.jpg)
JCDL 2002 Slide 4
1.2. Motivation
Existence of some established but independent archivesNeed for cross-archive services (like search engines)Lack of low-cost interoperability technologyExperience from past projects such as Dienst
![Page 5: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/5.jpg)
JCDL 2002 Slide 5
1.3. General System Strategy
Services
Metadata Harvesting
Document Model
![Page 6: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/6.jpg)
JCDL 2002 Slide 6
1.4. HistorySanta Fe Meeting – October 1999
Santa Fe Convention, January 2000Workshops (ACM-DL 2000, ECDL 2000)Structuring of the OAI
Steering CommitteeTechnical Committee
Open Days – US/EuropeProtocol for Metadata Harvesting v1.0, January 2001
Minor Update: v1.1 – July 2001Version 2.0 – June 2002
![Page 7: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/7.jpg)
JCDL 2002 Slide 7
1.5. Case Study: NDLTD
Networked Digital Library of Theses and DissertationsMultiple independent university-based collections of electronic documents
Virginia Tech
Humboldt U.
U. South Florida
InternationalETD
Library
OAIProtocol for
MetadataHarvesting
![Page 8: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/8.jpg)
JCDL 2002 Slide 8
2. Definitions / ConceptsBasic Principles
What is an Open Archive?Harvesting vs. FederationMetadata vs. DataData and Service Providers
Underlying TechnologyHTTP and XMLXML, XML Namespaces and Schema
Protocol PoliciesUniqueness and PersistenceWhat is a record?Multiplicity of MetadataSetsDatestamp, Harvesting and Flow Control
![Page 9: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/9.jpg)
JCDL 2002 Slide 9
2.1. What is an Open Archive ?Any WWW-based system that can be accessed through the well-defined interface of the Open Archives Protocol for Metadata Harvesting… a.k.a. OAI-Compliant RepositoryNo implications for:
Physical storage of dataCost of dataMetadata and data formatsAccess control to server
![Page 10: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/10.jpg)
JCDL 2002 Slide 10
2.2. Harvesting vs. FederationCompeting approaches to interoperability
Federation is when services are run remotely on remote data (e.g. Federated searching)Harvesting is when data/metadata is transferred from the remote source to the destination where the services are located (e.g. Union catalogues)
Federation requires more effort at each remote source but is easier for the local system and vice versa for harvestingOAI currently focuses on harvesting
![Page 11: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/11.jpg)
JCDL 2002 Slide 11
2.3. Metadata vs. Data
Data refers to digital objects or digital representations of objectsMetadata is information about the objects (e.g. title, author, etc.)OAI focuses on metadata, with the implicit understanding that metadata usually contains useful links to the source digital objects
![Page 12: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/12.jpg)
JCDL 2002 Slide 12
2.4. Data and Service ProvidersData Providers refer to entities who possess data/metadata and are willing to share this with others (internally or externally) via well-defined OAI protocols (e.g. database servers)Service Providers are entities who harvest data from Data Providers in order to provide higher-level services to users (e.g. search engines)OAI uses these denotations for its client/server model (data=server, service=client)
![Page 13: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/13.jpg)
JCDL 2002 Slide 13
2.5. HTTP and XML
Metadata Harvesting Protocol is an almost stateless request/response protocolRequests and responses are sent via the HTTP protocolRequests are encoded as GET/POST operationsResponses are well-formed XML documents
![Page 14: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/14.jpg)
JCDL 2002 Slide 14
2.6. XML Namespaces and Schema
Consistency and data quality is ensured by using XML Schema descriptions for each possible responseXML Namespaces are used where necessary to clearly define which parts of the responses are actual metadata and which support the Metadata Harvesting Protocol
![Page 15: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/15.jpg)
JCDL 2002 Slide 15
2.7. Uniqueness and Persistence
Each record must be uniquely addressable by a distinct identifierEach metadata entity should ideally be persistent to guarantee that service providers can always refer back to the source
![Page 16: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/16.jpg)
JCDL 2002 Slide 16
2.8. What is a record ?
A record refers to an independent XML structure that may be associated with digital or physical objectsRecords are usually associated with metadata, not dataOAI advocates harvesting of records, which contain metadata and additional fields to support the harvesting operation
![Page 17: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/17.jpg)
JCDL 2002 Slide 17
2.9. Sample OAI Record(note: schema and namespaces have been left out for clarity)
<record><header>
<identifier>oai:jcdl2002.org:tut1</identifier><datestamp>2002-02-03</datestamp><setSpec>tut</setSpec>
</header><metadata>
<dc><title>OAI Tutorial at JCDL</title><creator>Hussein Suleman</creator><language>English</language>
</dc></metadata><about>
<metadataID>oai:jcdl2002.org:tut1md</metadataID></about>
</record>
![Page 18: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/18.jpg)
JCDL 2002 Slide 18
2.10. Multiplicity of Metadata
Multiple formats of metadata allowedDublin Core is mandatoryAny other format allowed as long as it has an XML encodingE.g. MARC (Libraries), IMS (Education), ETDMS (Theses/Dissertations), RFC1807 (Bibliographies)
![Page 19: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/19.jpg)
JCDL 2002 Slide 19
2.11. Sets
Protocol mechanism to allow for harvesting of sub-collectionsNo well-defined semantics – depends completely on local data providersMay be defined by arrangement between data providers and service providersE.g. Subject areas, years, author names, search queries
![Page 20: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/20.jpg)
JCDL 2002 Slide 20
2.12. Datestamps & Harvesting
Each record needs a datestamp that indicates its date of creation or modificationDates are used to allow for harvesting by date range, thus allowing incremental and continuous transfer of metadata from a data provider to a service provider
![Page 21: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/21.jpg)
JCDL 2002 Slide 21
2.13. Flow Control
HTTP “retry-after” mechanism can be leveraged to support server-side delaying of a client’s requestResumption Tokens can be used to return partial results – the client is issued with a token which may be presented to the server to receive more results
![Page 22: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/22.jpg)
JCDL 2002 Slide 22
3. Requirements to be a Data Provider
Source of metadataServer technologyDatestampsDeletionsUnique identifiersMetadata mappings
![Page 23: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/23.jpg)
JCDL 2002 Slide 23
3.1. Source of Metadata
Database in proprietary formatCollection of metadata records in well-defined format/s
Files on diskMetadata may be dynamically or statically extracted from dataSynthetic collection
![Page 24: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/24.jpg)
JCDL 2002 Slide 24
3.2. Server TechnologyWWW ServerProtocol may be implemented in many forms
CGI Script (Perl, C++, Java)Java ServletPHP
Metadata (e.g. database) access mechanism requiredSee www.openarchives.org for list of publicly available software templatesSee www.dlib.vt.edu for VT experimental software
![Page 25: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/25.jpg)
JCDL 2002 Slide 25
3.3. DatestampsNeeded for every record to support incremental harvestingMust be updated for every addition/modification/deletion to ensure changes are correctly propagatedDifferent from dates within the metadata – this date is used only for harvestingCan be either YYYY-MM-DD or YYYY-MM-DDThh:mm:ssZ (must be GMT timezone)
![Page 26: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/26.jpg)
JCDL 2002 Slide 26
3.4. Unique Identifiers
Each record must have a unique identifierIdentifiers must be valid URIsExample:
oai:<archiveId>:<recordId>oai:etd.vt.edu:etd-1234567890
Each identifier must resolve to a single record and always to the same record (for a given metadata format)
![Page 27: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/27.jpg)
JCDL 2002 Slide 27
3.5. Deletions
Archives may keep track of deleted records, by identifier and datestampAll protocol result sets can indicate deleted recordsIf deletions are being tracked, this information must be stored indefinitely so as to correctly propagate to service providers with varying harvesting schedules
![Page 28: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/28.jpg)
JCDL 2002 Slide 28
3.6. Metadata MappingsData provider must map its metadata to the formats it chooses to provide through its OAI interfaceUnqualified Dublin Core required
Best practice is to include a link in the <identifier> tag to the actual digital resource or at least a human-readable web page
Native formats recommendedCommunity-based formats recommended
![Page 29: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/29.jpg)
JCDL 2002 Slide 29
4. Metadata Harvesting Protocol
Service RequestsIdentifyListMetadataFormatsListSetsGetRecordListIdentifiersListRecords
Metadata MultiplicityDate RangesResumption TokensError and Exceptions
![Page 30: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/30.jpg)
JCDL 2002 Slide 30
4.1. Identify
PurposeReturn general information about the archive and its policies
ParametersNone
Sample URLhttp://www.anarchive.org/cgi-bin/OAI?verb=Identify
![Page 31: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/31.jpg)
JCDL 2002 Slide 31
4.2. Identify - Response
![Page 32: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/32.jpg)
JCDL 2002 Slide 32
4.3. ListMetadataFormats
PurposeList metadata formats supported by the archive as well as their schema locations and namespaces
Parametersidentifier – for a specific record (O)
Sample URLhttp://www.anarchive.org/cgi-bin/OAI?verb=ListMetadataFormats
![Page 33: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/33.jpg)
JCDL 2002 Slide 33
4.4. ListMetadataFormats - Response
![Page 34: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/34.jpg)
JCDL 2002 Slide 34
4.5. ListSets
PurposeProvide a hierarchical listing of sets in which records may be organized
ParametersNone
Sample URLhttp://www.anarchive.org/cgi-bin/OAI?verb=ListSets
![Page 35: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/35.jpg)
JCDL 2002 Slide 35
4.6. ListSets – Response
![Page 36: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/36.jpg)
JCDL 2002 Slide 36
4.7. GetRecord
PurposeReturns the metadata for a single identifier in the form of an OAI record
Parametersidentifier – unique id for record (R)metadataPrefix – metadata format (R)
Sample URLhttp://www.anarchive.org/cgi-bin/OAI?verb=GetRecord&identifier=oai:test:123&metadataPrefix=oai_dc
![Page 37: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/37.jpg)
JCDL 2002 Slide 37
4.8. GetRecord - Response
![Page 38: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/38.jpg)
JCDL 2002 Slide 38
4.9. ListIdentifiersPurpose
List headers for all records corresponding to the specified parameters
Parametersfrom – start date (O)until – end date (O)set – set to harvest from (O)metadataPrefix – metadata format to list identifiers for (R)resumptionToken – flow control mechanism (X)
Sample URLhttp://www.anarchive.org/cgi-bin/OAI?verb=ListIdentifiers&metadataPrefix=oai_dc
![Page 39: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/39.jpg)
JCDL 2002 Slide 39
4.10. ListIdentifiers - Response
![Page 40: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/40.jpg)
JCDL 2002 Slide 40
4.11. ListRecordsPurpose
Retrieves metadata for multiple recordsParameters
from – start date (O)until – end date (O)set – set to harvest from (O)resumptionToken – flow control mechanism (X)metadataPrefix – metadata format (R)
Sample URLhttp://www.anarchive.org/cgi-bin/OAI?verb=ListRecord&metadataprefix=oai_dc&from=2001-01-01
![Page 41: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/41.jpg)
JCDL 2002 Slide 41
4.12. ListRecords - Response
![Page 42: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/42.jpg)
JCDL 2002 Slide 42
4.13. Metadata Multiplicity
![Page 43: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/43.jpg)
JCDL 2002 Slide 43
4.14. Date Ranges
![Page 44: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/44.jpg)
JCDL 2002 Slide 44
4.15. Resumption Token
![Page 45: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/45.jpg)
JCDL 2002 Slide 45
4.16. Errors and Exceptions
![Page 46: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/46.jpg)
JCDL 2002 Slide 46
5. Implementation DetailsTools RequiredBasic program layoutObject-oriented approachesExtensible metadata generationData cleaningCaching of resultsError handlingDenial-of-service preventionCreating resumption tokens
![Page 47: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/47.jpg)
JCDL 2002 Slide 47
5.1. Tools Required
Code templates if available (available for many languages)Basic programming environmentXML generators (for non-trivial encoding)Database access libraries/drivers (e.g. DBI, ODBC, JDBC)
![Page 48: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/48.jpg)
JCDL 2002 Slide 48
5.2. Basic program layoutparse WWW request to extract parametersif (verb=‘Identify’)
ProcessIdentify;else if (verb=‘ListMetadataFormats’)
ProcessListMetadataFormats;else if (verb=‘ListSets’)
ProcessListSets;else if (verb=‘GetRecord’)
ProcessGetRecord;else if (verb=‘ListIdentifiers’)
ProcessListIdentifiers;else if (verb=‘ListRecords’)
ProcessListRecords;else
ReportError (‘badVerb’);
![Page 49: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/49.jpg)
JCDL 2002 Slide 49
5.3. Object-Oriented Approaches
Cleaner separation of protocol, database access and metadata generationExample approaches
Each service request is handled by a object• Simpler incremental development
Protocol, Database and Metadata are objects• Greater portability of code
Inheritance from a basic OAI data provider
![Page 50: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/50.jpg)
JCDL 2002 Slide 50
5.4. Metadata Generation
ApproachesMap from source to each metadata formatUse crosswalks (maybe XSLT) to generate additional formats
source dc rfc1807
= =name title title
=author creator author=
![Page 51: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/51.jpg)
JCDL 2002 Slide 51
5.5. Data Cleaning
Escape special XML charactersConvert to UTF-8 version of UnicodeConvert entity referencesRemove extraneous whitespaceConvert CR/LF for paragraphsURLs
/?#=&:;+ must be encoded as escape sequences
![Page 52: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/52.jpg)
JCDL 2002 Slide 52
5.6. Result Caching
For multiple requests from many clients or to handle partial result setsKeep temporary tables/filesExpire temporary data when no longer neededIs this necessary to handle date-range requests where new items are added to the result set while harvesting is in progress?
![Page 53: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/53.jpg)
JCDL 2002 Slide 53
5.7. Error Handling
All protocol errors are in XML formatbadVerb: illegal verb requestedbadArgument: illegal parameter values or combinationsbadResumptionToken, cannotDisseminateFormat, idDoesNotExist: parameters are in right format but are not legal under current conditionsnoRecordsMatch, noMetadataFormats, noSetHierarchy: empty response exception
![Page 54: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/54.jpg)
JCDL 2002 Slide 54
5.8. Denial-of-Service Prevention
Return only partial results and issue a resumption token for moreUse 503 retry-after HTTP errors to have clients try again after a specified back-off timeUse access control lists to limit who may access the archiveInvoke an explicit delay before sending back results
![Page 55: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/55.jpg)
JCDL 2002 Slide 55
5.9. Creating resumptionTokens
Combine from/until/metadataPrefix/set and a record number indicator with delimiters into a sequential tokenFor example:
from!until!metadataPrefix!set!recordnumber2000-01-01!2001-01-01!!All!100
Use a session manager with automatic expiry For example:
vtetd14june10amsession12
![Page 56: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/56.jpg)
JCDL 2002 Slide 56
6. Common Problems
No unique identifiers !No datestamps !Incomplete information in databaseNew metadata formatXML responses not validating
![Page 57: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/57.jpg)
JCDL 2002 Slide 57
6.1. No unique identifiers
Create an independent identifier mappingUse row numbers for a databaseUse filenames for data in filesUse a hash from other fields
E.g. author+year+first word in title
![Page 58: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/58.jpg)
JCDL 2002 Slide 58
6.2. No datestamps
Ignore the datestamp parameters and stamp all records with the current dateCreate a date table with the current date for all old entries and update dates for new entriesMost Important: Any harvesting algorithm that is interoperably stable for an archive with real dates should be stable for an archive with synthesized dates
![Page 59: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/59.jpg)
JCDL 2002 Slide 59
6.3. Incomplete information
Synthesize metadata fields based on a priori knowledge of the data
Example: publisher and language may be hard-coded for many archives
Omit fields that cannot be filled in correctly –better to have less information than incorrect information !
![Page 60: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/60.jpg)
JCDL 2002 Slide 60
6.4. New metadata format
Find the description, namespace and formal name of the standardFind an XML Schema description of the data format
If none exists, write one (consult other OAI people for assistance)
Create the mapping and test that it passes XML schema validation
![Page 61: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/61.jpg)
JCDL 2002 Slide 61
6.5. XML not validating
Check namespaces and schemaUse Repository Explorer in non-validating mode to check structure of XML, without looking at namespaces or schemataValidate schema by itself if it is non-standardLook at XML produced by other repositoriesWatch out for character encoding issues
![Page 62: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/62.jpg)
JCDL 2002 Slide 62
7. Tools for Testing
Repository ExplorerInteractive BrowsingTesting of parametersMultiple views of dataMultilingual supportAutomatic test suite
OAI RegistryXML Schema Validator
![Page 63: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/63.jpg)
JCDL 2002 Slide 63
7.1. RE Interactive Browsing
![Page 64: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/64.jpg)
JCDL 2002 Slide 64
7.2. RE Parameter Testing
![Page 65: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/65.jpg)
JCDL 2002 Slide 65
7.3. RE Browsing
![Page 66: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/66.jpg)
JCDL 2002 Slide 66
7.4. RE Browsing
![Page 67: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/67.jpg)
JCDL 2002 Slide 67
7.5. RE Browsing
![Page 68: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/68.jpg)
JCDL 2002 Slide 68
7.6. RE Browsing
![Page 69: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/69.jpg)
JCDL 2002 Slide 69
7.7. RE Browsing
![Page 70: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/70.jpg)
JCDL 2002 Slide 70
7.8. RE Multiple views of data
![Page 71: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/71.jpg)
JCDL 2002 Slide 71
7.9. RE Multilingual Support
![Page 72: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/72.jpg)
JCDL 2002 Slide 72
7.10. RE Automatic Test Suite
![Page 73: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/73.jpg)
JCDL 2002 Slide 73
7.11. RE Error in Response
![Page 74: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/74.jpg)
JCDL 2002 Slide 74
7.12. RE Error in XML
![Page 75: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/75.jpg)
JCDL 2002 Slide 75
7.13. OAI Registry
![Page 76: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/76.jpg)
JCDL 2002 Slide 76
7.14. OAI Registry
![Page 77: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/77.jpg)
JCDL 2002 Slide 77
7.15. XSV Schema Validator
![Page 78: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/78.jpg)
JCDL 2002 Slide 78
8. Service Providers
How to HarvestPoliciesIntermediate systemsToolsCase Study: ARCCase Study: NDLTD
![Page 79: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/79.jpg)
JCDL 2002 Slide 79
8.1. How To HarvestIdentify to get basic informationListIdentifiers, followed by ListMetadataFormats for each record and then GetRecord for each id/metadata combination
No. of short HTTP requests = 1+n+n x mn=no. of identifiers, m=no. of metadata formats
ListRecords for each metadata format requiredNo. of long HTTP requests = mm=no. of metadata formats
![Page 80: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/80.jpg)
JCDL 2002 Slide 80
8.2. PoliciesUse schedule for harvesting regularlyStore date when last harvested (before you start)Use a two day overlap (or one day if your archive uses proper UTC datestamps)
New items may be added for the current dayTimezones create up to a day of lag if you ignore themIf the source uses correct UTC datestamps and second granularity then only 1 second of overlap is needed!
Each time a record is encountered, erase previous instances
![Page 81: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/81.jpg)
JCDL 2002 Slide 81
8.3. Intermediate Systems
Both a data provider and service providerAll harvested data must have the datestamps updated to the date on which the harvesting was doneIdentifiers retain their original valuesNote: Consistency in the source archive propagates, but so does inconsistency!
![Page 82: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/82.jpg)
JCDL 2002 Slide 82
8.4. ToolsCheck OAI website for sample codeXML parsers – depending on platform – check W3CXML Schema validators
Very few available – the reference version works but may not be easy to installIgnore validation if you can trust the source
Sample data providers – check the OAI website for a list of conformant public archives
![Page 83: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/83.jpg)
JCDL 2002 Slide 83
8.5. Case Study: ARC
![Page 84: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/84.jpg)
JCDL 2002 Slide 84
8.6. Case Study: NDLTD
Search/Browse Engines Other Services
VTLS Virtua MARIAN Recommender Cross-Ref. …
NDLTD ETD Union Catalog
Virginia Tech …Humboldt U. U. Oldenberg
![Page 85: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/85.jpg)
JCDL 2002 Slide 85
9. OAI Communities
Shared Metadata FormatsShared semanticsLayering over OAIClosed OAI networksOAI within the DL
![Page 86: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/86.jpg)
JCDL 2002 Slide 86
9.1. Shared Metadata Formats
Use metadata formats accepted within a community to convey more specific informationExamples
E-Print format (under development)ETD-MS for theses and dissertationsVRA Core for multimediaIMS Metadata for educational material
![Page 87: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/87.jpg)
JCDL 2002 Slide 87
9.2. Shared Semantics
Develop a shared understanding for the meanings of fieldsExamples
Developing controlled vocabularies for fieldsUsing specific fields for external links (OAI recommends using identifier in DC for this)Choosing from among existing standards (like language names)
![Page 88: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/88.jpg)
JCDL 2002 Slide 88
9.3. Layering over OAI
Convert OAI records into more standard formats like MARC communications formatCollapse multiple requests into one to make harvesting easierName authority system (developed at OCLC) piggybacks name resolution over the OAI protocol
![Page 89: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/89.jpg)
JCDL 2002 Slide 89
9.4. Closed OAI networks
Data providers need not go public !Within an organization, OAI can be used for data transfer among heterogeneous systemsMore control over use, making global optimizations possible (like harvesting schedules and choice of metadata formats)
![Page 90: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/90.jpg)
JCDL 2002 Slide 90
9.5. OAI within the DLUse the OAI protocol as the basis for components to communicateExamples
Search Engines could use dynamic sets to correspond to search resultsBrowsing can be directed by setsReviews and Annotations can each be independent OAI data providers
Open Digital Libraries project to investigate this approach:
http://oai.dlib.vt.edu/odl
![Page 91: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/91.jpg)
JCDL 2002 Slide 91
10. Now What ?
1-2-3 RecipeFuture of Metadata Harvesting ProtocolFuture of OAILinks
![Page 92: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/92.jpg)
JCDL 2002 Slide 92
10.1. 1-2-3 Recipe
DO I REALLY WANT TO DO THIS?Do I have an accessible metadata source?Do I have a server to host the OAI script/program?Can I satisfy the requirements to be a data provider?Can I write the code or modify a template or hire a programmer to do either?
![Page 93: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/93.jpg)
JCDL 2002 Slide 93
10.2. Future of Protocol
Version 2.0Released ~ June 2001
SOAP versionEnvisioned for near future
![Page 94: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/94.jpg)
JCDL 2002 Slide 94
10.3. Future of OAI
Advocacy for easier access to informationNew protocols/tools to support this missionResearch projects to test theory underlying current architecture e.g. Cyclades
![Page 95: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/95.jpg)
JCDL 2002 Slide 95
10.4. LinksOpen Archives Initiative
http://www.openarchives.orgOAI Metadata Harvesting Protocol
http://www.openarchives.org/OAI/openarchivesprotocol.htmVirginia Tech DLRL OAI Projects
http://www.dlib.vt.edu/projects/OAI/Repository Explorer
http://purl.org/net/oai_explorerNDLTD
http://www.ndltd.org
![Page 96: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/96.jpg)
JCDL 2002 Slide 96
10.5. More LinksARC Cross-Archive Search Service
http://arc.cs.odu.edu/XML Schema Validator
http://www.w3.org/2001/03/webdata/xsvDublin Core Metadata Initiative
http://www.dublincore.orgE-Prints DL-in-a-box
http://www.eprints.orgXML Tools at W3C
http://www.w3.org/XML/#software
![Page 97: Building Interoperable Digital Libraries: A Practical ... · CGI Script (Perl, C++, Java) Java Servlet PHP Metadata (e.g. database) access mechanism required See for list of publicly](https://reader034.vdocuments.mx/reader034/viewer/2022042219/5ec5c97375b54108a0393fba/html5/thumbnails/97.jpg)
JCDL 2002 Slide 97
That’s All Folks !