Latest 0.0.2
Homepage https://github.com/EKT/OAI-PMH-Harvester-for-ObjC
License Creative Commons Attribution-ShareAlike 3.0 Unported License
Platforms ios 7.0
Dependencies TouchXML
Authors

OAI-PMH-Harvester-for-ObjC

Introduction

OAI-PMH Objective-C harvester is an Objective C library/wrapper over the OAI-PMH protocol.
The Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH) is a low-barrier mechanism for repository interoperability. Data Providers are repositories that expose structured metadata via OAI-PMH. Service Providers or metadata harvesters (like this one) then make OAI-PMH service requests to harvest that metadata. OAI-PMH is a set of six verbs or services that are invoked within HTTP.

Installation

1) Download or clone this project on your machine
2) Copy & Paste the folder OAIHarvester in your project, drag the folder in your XCode project as usual
3) In your projects precompiled header file (.pch extension) add the following lines

#import "TouchXML.h"
#define BASE_NAMESPACE @"http://www.openarchives.org/OAI/2.0/"

4) Enable libxml2 library

  • In XCode, within Build Settings, search for Header search paths setting and add /usr/include/libxml2 value to it
  • In the same place, search for Other linker flags setting and add -lxml2 value

5) You are ready to use the library

Usage

Instantiate a new harvester
OAIHarvester *harvester = [[OAIHarvester alloc] initWithBaseURL:@"PLACE THE OAI BASE URL OF YOUR REPOSITORY HERE"];

Identify instance is ready for you:<br>

NSLog(@"repo name = %@", harvester.identify.repositoryName);
NSLog(@"baseURL = %@", harvester.identify.baseURL);
NSLog(@"granularity = %@", harvester.identify.granularity);
for (NSString *email in harvester.identify.adminEmails){
    NSLog(@"admin email = %@", email);
}
for (NSString *compression in harvester.identify.compressions){
    NSLog(@"compression = %@", compression);
}

Metadata formats are also ready for you:

for (MetadataFormat *format in harvester.metadataFormats){
    NSLog(@"%@: %@", format.prefix, format.namespce);
}

Sets are also ready for you:

for (Set *set in harvester.sets){
    NSLog(@"%@: %@", set.fullSpec, set.name);
}

Define metadata prefix and set for your harvester (the latter is optional):

harvester.metadataPrefix = @"oai_dc";
harvester.setSpec = ((Set *)[harvester.sets objectAtIndex:0]).fullSpec;

List records (1st way – using resumption tokens):

NSArray *records = [harvester listRecordsWithResumptionToken:nil error:&error];
if (error){
    NSLog(@"error = %@", [error localizedDescription]);
}
else {
    if ([harvester hasNextRecords]){
        NSArray *records2 = [harvester getNextRecordsWithError:&error];

        Record *record = [records2 objectAtIndex:0];
        NSLog(@"identifier = %@", record.recordHeader.identifier);
        NSLog(@"status = %i", record.recordHeader.status);
        NSLog(@"datestamp = %@", record.recordHeader.datestamp);
        for (NSString *set in record.recordHeader.setSpecs){
            NSLog(@"set = %@", set);
        }
        NSLog(@"namespace: %@", record.recordMetadata.namespce);
        NSLog(@"schemaLoacation: %@", record.recordMetadata.schemaLocation);
        for (MetadataElement *metadata in record.recordMetadata.metadataElements){
            NSLog(@"%@: %@", metadata.name, metadata.value);
        }
    }
}

List records (2nd way – get all items at once):

NSArray *records = [harvester listAllRecords error:&error];

Example

A fully detailed example can be found here. It is an open-source iOS example of how to use this library in a real OAI-PMH enabled repository, the one of Serres Public Library.

Limitations

  • No validation of the incoming xml
  • No support for resumption tokens in the following verbs: ListSets
  • No support for date selective harvesting for the verbs: ListIdentifiers and ListRecords
  • No support for the "description" element in Identify verb
  • No support for the "about" element in ListRecords verb

Dependencies

The only dependency of this project is the TouchXML library that can be found here.

Author

Kostas Stamatis
National Documentation Center / NHRF

Licence

Creative Commons License
OAI-PMH ObjC Harvester by Konstantinos Stamatis is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Latest podspec

{
    "name": "OAIHarvester",
    "version": "0.0.2",
    "summary": "OAI-PMH Objective-C harvester is an Objective C library/wrapper over the OAI-PMH protocol.",
    "description": "OAI-PMH Objective-C harvester is an Objective C library/wrapper over the OAI-PMH protocol. The Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH) is a low-barrier mechanism for repository interoperability. Data Providers are repositories that expose structured metadata via OAI-PMH. Service Providers or metadata harvesters (like this one) then make OAI-PMH service requests to harvest that metadata. OAI-PMH is a set of six verbs or services that are invoked within HTTP.nn* Think: Why did you write this? What is the focus? What does it do?n* CocoaPods will be using this to generate tags, and improve search results.n* Try to keep it short, snappy and to the point.n* Finally, don't worry about the indent, CocoaPods strips it!",
    "homepage": "https://github.com/EKT/OAI-PMH-Harvester-for-ObjC",
    "license": "Creative Commons Attribution-ShareAlike 3.0 Unported License",
    "authors": {
        "Kostas Stamatis": "[email protected]"
    },
    "source": {
        "git": "https://github.com/EKT/OAI-PMH-Harvester-for-ObjC.git",
        "tag": "0.0.1"
    },
    "source_files": [
        "OAIHarvester",
        "OAIHarvester/**/*.{h,m}"
    ],
    "exclude_files": "Classes/Exclude",
    "libraries": "xml2",
    "xcconfig": {
        "HEADER_SEARCH_PATHS": "$(SDKROOT)/usr/include/libxml2"
    },
    "dependencies": {
        "TouchXML": []
    },
    "platforms": {
        "ios": "7.0"
    }
}

Pin It on Pinterest

Share This