https://github.com/acdh-oeaw/arche-oaipmh

OAI-PMH service for arche-core

https://github.com/acdh-oeaw/arche-oaipmh

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    3 of 5 committers (60.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.7%) to scientific vocabulary

Keywords

arche
Last synced: 6 months ago · JSON representation

Repository

OAI-PMH service for arche-core

Basic Info
  • Host: GitHub
  • Owner: acdh-oeaw
  • License: mit
  • Language: PHP
  • Default Branch: master
  • Homepage:
  • Size: 1.22 MB
Statistics
  • Stars: 1
  • Watchers: 3
  • Forks: 0
  • Open Issues: 2
  • Releases: 62
Topics
arche
Created almost 6 years ago · Last pushed 8 months ago
Metadata Files
Readme License

README.md

OAI-PMH service for arche-core

Latest Stable Version Build status Coverage Status License

The main aim was to keep it flexible:

  • It doesn't enforce any metadata schema. RDF metadata to OAI-PMH facets (id, date, set) mappings are provided in a configuration file.
  • It's shipped with classes implementing various OAI-PMH metadata generation scenarios, e.g.:
    • Using Dublin Core and Dublin Core terms contained in the repository resource RDF metadata.
    • Serializing whole repository resource RDF metadata to XML.
    • Serving another linked repository resource as the OAI-PMH metadata.
    • By filling an XML template with repository resource RDF metadata.
  • It's easy to extend
    • implement your own metadata sources
    • implement your own search class
    • implement your own sets

REST API Extensions

The service implements two extensions over the REST API defined by the OAI-PMH specification:

  • verb=GetRecordRaw returns just a record data without the OAI-PMH "envelope".
  • verb=GetRecordRaw&format=RDFserializationMime assumes the record is in the RDF-XML and serializes it in a given RDF serialization format (e.g. text/turtle or application/ld+json)

Installation

  • Run in your webroot: bash composer require acdh-oeaw/arche-oaipmh cp vendor/acdh-oeaw/arche-oaipmh/.htaccess vendor/acdh-oeaw/arche-oaipmh/index.php . cp vendor/acdh-oeaw/arche-oaipmh/config-sample.yaml config.yaml
  • Adjust config.yaml according to comments in the file.

Required repository structure

Much attention was paid to make the service flexible. To achieve that different implementations were provided for each of main components (set handling component, metadata source component). These implementations provide various features and put various requirements on your repository structure. Please read the documentation provided in the config-sample.yaml and, if needed, the documentation of particular classes to get more information.

Architecture

Source code documentation can be found at https://acdh-oeaw.github.io/arche-docs/devdocs/namespaces/acdhoeaw-arche-oaipmh.html

+------------------+ | DeletedInterface | +------------------+ ^ ^ | | +-----+ +-----------+ | | | Search | +-----------+ | Oai |--->| Interface |--->| Metadata | | | +-----------+ | Interface | +-----+ | +-----------+ | | v v +--------------+ | SetInterface | +--------------+

Oai

The main class is acdhOeaw\oai\Oai which works as a controller. It:

  • checks OAI-PMH requests correctness,
  • handles OAI-PMH identify and ListMetadataFormats commands
    • the deletedRecord field value of the identify request response is fetched using the DeletedInterface
  • delegates OAI-PMH GetRecord, ListIdentifiers and ListRecords commands to a chosen class implementing the acdhOeaw\oai\search\SearchInterface
  • delegates OAI-PMH ListSets command to a chosen class extending the acdhOeaw\oai\set\SetInterface class.
  • generates OAI-PMH compliant output from results of above mentioned actions
  • catches errors and generates OAI-PMH compliant error responses

Until you want to implement the resumption tokens there should be no need to alter this class.

SetInterface

The acdhOeaw\oai\set\SetInterface provides an API:

  • for the Oai class to handle the ListSets OAI-PMH requests
  • for the SearchInterface implementations to include set information in searches

Currenlty there are three implementations of the SetInterface:

  • acdhOeaw\oai\set\NoSet simply throwing the noSetHierarchy OAI-PMH error
  • acdhOeaw\oai\set\Simple where set membership is fetched from a given RDF metadata property. This property value is taken as both <setSpec> and <setName> values and no <setDescription> is provided.
  • acdhOeaw\oai\set\Complex where a given RDF metadata property points to another repository resource describing the set.

If exsisting implementations don't fulfil your needs, you need to write your own class extending the acdhOeaw\oai\set\SetInterface one and set the oaiSetClass in the config.ini file to your class name.

DeletedInterface

The acdhOeaw\oai\deleted\DeletedInterface provides an API:

  • for the Oai class to get the deletedRecord field value to be reported in the OAI-PMH identify response
  • for the SearchInterface implementations to include information on resource deletion

Currently there are two implementations of the DeletedInterface:

  • acdhOeaw\oai\deleted\No reporting no support for deleted resources
  • acdhOeaw\oai\deleted\RdfProeprty where a resource having a given metadata property (no matter its value) is assumed to be deleted

If exsisting implementations don't fulfil your needs, you need to write your own class extending the acdhOeaw\oai\deleted\DeletedInterface one and set the oaiDeletedClass in the config.ini file to your class name.

SearchInterface

The acdhOeaw\oai\search\SearchInterface provides an API for the Oai class to:

  • Perform search for resources.
  • Get basic resource metadata required to serve the ListIdentifiers OAI-PMH request.
    Data for each resource are returned as acdhOeaw\oai\data\Headerdata objects.
  • Get full resource metadata required to serve ListResources and GetRecord OAI-PMH requests.
    Data for each resource are returned as acdhOeaw\oai\metadata\MetadataInterface objects.

The SearchInterface implementations depend on three other interfaces:

  • SetInterface for getting SPARQL search query extensions for including information and/or filters on sets.
  • DeletedInterface for including information on resources deletion.
  • MetadataInterface for getting the full resource metadata required to serve ListResources and GetRecord OAI-PMH requests.

The current implementation (acdhOeaw\oai\search\BasicSearch) is quite flexible:

  • takes OAI-PMH identifier and datestamp mappings from the configuration file (oaiIdProp and oaiDateProp)
  • honors set, deleted and metadata format SPARQL search query extensions provided by the SetInterface, DeletedInterface and MetadataInterface

Until you don't need to alter the way identifier and datestamp are fetched there should be no need to develop an alternative implementation (possibly with additional filters).

MetadataInterface

The acdhOeaw\oai\metadata\MetadataInterface provides a common API for fetching full OAI-PMH metadata from different sources, e.g. the repository resource metadata (by applying different mappings) or other repository resource.

To make it as flexible as possible:

  • It allows to extend SPARQL search queries performed by the SearchInterface implementations.
  • The MetadataInterface object constructor is provided with repository resource object, the metadata format description and full set of SPARQL search query data describing a given resource.

Existing implementations are:

  • acdhOeaw\oai\metadata\RdfXml serializes all resource's RDF metadata into XML.
  • acdhOeaw\oai\metadata\DcMetadata like the RdfXml but returns only Dublin Core and Dublin Core Terms metadata properties.
  • acdhOeaw\oai\metadata\ResMetadata uses another (linked trough metadata) resource's binary payload as the OAI-PMH metadata.
  • acdhOeaw\oai\metadata\CmdiMetadata a specialization of the ResMetadata additionaly checking for the binary resource content schema.
  • acdhOeaw\oai\metadata\TemplateMetadata creates metadata based on flexible XML templates. More detailed description can be found here.

It's possible that you'll need to generate OAI-PMH metadata in (yet) another way. In such a case you must develop your own class implementing the MetadataInterface. Taking look at already existing implementations should be a good starting point.

Owner

  • Name: Austrian Centre for Digital Humanities & Cultural Heritage
  • Login: acdh-oeaw
  • Kind: organization
  • Email: acdh@oeaw.ac.at
  • Location: Vienna, Austria

GitHub Events

Total
  • Create event: 4
  • Release event: 3
  • Issues event: 3
  • Delete event: 1
  • Issue comment event: 1
  • Push event: 6
Last Year
  • Create event: 4
  • Release event: 3
  • Issues event: 3
  • Delete event: 1
  • Issue comment event: 1
  • Push event: 6

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 194
  • Total Committers: 5
  • Avg Commits per committer: 38.8
  • Development Distribution Score (DDS): 0.139
Past Year
  • Commits: 17
  • Committers: 1
  • Avg Commits per committer: 17.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Mateusz Żółtak z****k@z****g 167
Mateusz Żółtak m****k@o****t 17
Norbert Czirjak n****k@o****t 4
hannes h****r@o****t 4
Matej Durco t****h@v****t 2
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 10
  • Total pull requests: 0
  • Average time to close issues: about 1 month
  • Average time to close pull requests: N/A
  • Total issue authors: 1
  • Total pull request authors: 0
  • Average comments per issue: 0.5
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 2
  • Pull requests: 0
  • Average time to close issues: 3 months
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 0.5
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • zozlak (10)
Pull Request Authors
Top Labels
Issue Labels
enhancement (5) bug (3)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • packagist 3,661 total
  • Total dependent packages: 0
  • Total dependent repositories: 1
  • Total versions: 65
  • Total maintainers: 1
packagist.org: acdh-oeaw/arche-oaipmh

OAI-PMH service for the ACDH repo solution

  • Versions: 65
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 3,661 Total
Rankings
Dependent packages count: 19.1%
Downloads: 20.8%
Dependent repos count: 22.0%
Average: 22.8%
Stargazers count: 25.0%
Forks count: 27.1%
Maintainers (1)
Funding
Last synced: 6 months ago

Dependencies

composer.json packagist
  • phpstan/phpstan * development
  • acdh-oeaw/arche-lib >=2 <6
  • acdh-oeaw/easyrdf *
  • zozlak/logging *
  • zozlak/query-part ^2.1
.github/workflows/test.yaml actions
  • actions/checkout v4 composite
  • shivammathur/setup-php v2 composite