OAIHarvester 0.0.2

OAIHarvester 0.0.2

测试测试
语言语言 Obj-CObjective C
许可证 CC
发布最新发布2015年10月

Kostas Stamatis维护。



  • 作者:
  • Kostas Stamatis

OAI-PMH-Harvester-for-ObjC

简介

OAI-PMH Objective-C 收割器是一个基于 OAI-PMH 协议 的 Objective C 库/包装器。开放存档初始化协议 (OAI-PMH) 是一种低门槛的互操作机制。数据提供者是暴露结构化元数据的存储库。服务提供者或元数据收割机(如本例)随后通过 OAI-PMH 发起 OAI-PMH 服务请求以收割这些元数据。OAI-PMH 是一套在 HTTP 中调用的六个动词或服务。

安装

1) 在您的机器上下载或克隆此项目
2) 将文件夹 OAIHarvester 复制并粘贴到您的项目中,像往常一样将文件夹拖到 XCode 项目中
3) 在您的项目的前编译头文件(.pch 扩展名)中添加以下行

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

4) 启用 libxml2

  • 在 XCode 中,在 构建设置 中,搜索 头文件搜索路径 设置并将 /usr/include/libxml2 添加到其中
  • 在同一位置,搜索 其他连接器标志 设置并添加 -lxml2

5) 您现在可以使用此库了

用法

实例化一个新的收割器
OAIHarvester *harvester = [[OAIHarvester alloc] initWithBaseURL:@"在此处放置您的存储库的 OAI 基础 URL"];

识别实例已准备好供您使用

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);
}


元数据格式也已准备好供您使用

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


集合也准备好了供您使用

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


为您的收割器定义元数据前缀和集合(后者是可选的)

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


列出记录(第 1 种方式 - 使用恢复令牌)

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);
        }
    }
}


列出记录(第 2 种方式 - 一次性获取所有项)

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

示例

完整的示例可以在此处找到。这是一个开源 iOS 示例,展示如何在启用 OAI-PMH 的真实存储库中使用此库,即 Serres 公共图书馆的那个。

限制

  • 不验证进入的 xml
  • 不以下动词支持恢复令牌:列出集中
  • 不以下动词支持日期选择性收割:列出标识符列出记录
  • 不在 Identify 动词中支持 "description" 元素
  • 不在 列出记录 动词中支持 "about" 元素

依赖项

本项目的唯一依赖是TouchXML库,可在此处找到。

作者

Kostas Stamatis
国家文献中心 / NHRF

许可证

Creative Commons License
Konstantinos Stamatis编写的OAI-PMH ObjC Harvester采用Creative Commons Attribution-ShareAlike 3.0 Unported License许可。