dagstuhl/datacite
Composer 安装命令:
composer require dagstuhl/datacite
包简介
A DataCite API client for creating/updating DOI metadata (Schema 4.4), developed and used by Dagstuhl Publishing.
README 文档
README
The aim of this project is to provide an easy-to-use php interface for
- providing schema-compliant DataCite metadata (Schema 4.4)
- registering/updating the doi metadata via the DataCite API.
Note:
- This is not a full API implementation; it only covers the use cases required by Dagstuhl Publishing.
- This is a mirror of the master branch of our internal git.
Installation: composer require dagstuhl/datacite
Code Examples:
1) Creation of a metadata record
- General Information:
$dataCiteRecord = new DataCiteRecord(); $dataCiteRecord->setDoi('10.publisher.example-doi'); $dataCiteRecord->addTitle(Title::main('This is an example title', 'en'));
- Adding an author with affiliation:
$creator = Creator::personal('Concatenated Names', 'Given Name', 'Family Name'); $creator->addAffiliation(new Affiliation('This is a sample affiliation')); $dataCiteRecord->addCreator($creator);
- Adding an editor with affiliation based on ror Identifier:
$name = Name::organizational('Schloss Dagstuhl - Leibniz-Zentrum für Informatik'); $name->addAffiliation(Affiliation::ror('00k4h2615')); $contributor = Contributor::editor($name); $dataCiteRecord->addContributor($contributor);
- Adding relationships to other resources / alternative identifiers:
$related = []; $related[] = RelatedIdentifier::isPartOf('arXiv:....', RelatedIdentifier::TYPE_ARXIV); $related[] = RelatedIdentifier::cites('10....', RelatedIdentifier::TYPE_DOI); $alternate = []; $alternate[] = AlternateIdentifier::urn('this is a demo urn'); $alternate[] = AlternateIdentifier::isbn('this is a demo urn'); $dataCiteRecord->setRelatedIdentifiers($related); $dataCiteRecord->setAlternateIdentifiers($alternate);
- Classifying the type of the Document
$type = new Type( TYPE::RESOURCE_TYPE_GENERAL_TEXT, TYPE::RESOURCE_TYPE_BOOK, TYPE::BIBTEX_TYPE_BOOK ); // or choose a pre-defined type, e.g., $type = Type::conferenceProceedingsPaper(); $type = Type::conferenceJournalPaper(); $type = Type::bookChapter(); ... $dataCiteRecord->setType($type);
- Add date-fields:
$dates = []; $dates[] = Date::created('2020-10-06'); $dates[] = Date::issued('2020-10-06'); $dates[] = Date::copyrighted('2020-10-06'); $dataCiteRecord->setDates($dates);
- View the generated JSON:
var_dump($dataCiteRecord->toApiJson());
2) Registering/Updating DOI Metadata
- Updating an existing record:
$dataCiteClient = new DataCiteClient('username', 'password', 'api-url'); $dataCiteRecord = $dataCiteClient->updateDataCiteRecord($dataCiteRecord); if ($dataCiteRecord === NULL) { // error handling goes here }
- The same lines of code produce a draft record, if the DOI was not registered before. To make this draft data publicly available and finally register the doi, simply call
$dataCiteRecord = $dataCiteClient->setDoiState($dataCiteRecord->getDoi(), DataCiteClient::STATE_FINDABLE);
- For error handling/debugging, use the following methods showing details on the status of the last HTTP-request:
$dataCiteClient->getException() / ...->getErrorMessage() / ->getResponse() / ->getStatus()
3) Connect to your own models by implementing a DataCiteDataProvider
- the
DataCiteDataProviderinterface provides a clean interface to your custom models - just implement this interface on your models and obtain a DataCiteRecord by
class MyModelDataProvider implements \Dagstuhl\DataCite\DataCiteDataProvider { // ... see the interface for details ... } $dataProvider = new MyModelDataProvider($myModel); $dataCiteRecord = DataCiteRecord::fromDataProvider($dataProvider);
dagstuhl/datacite 适用场景与选型建议
dagstuhl/datacite 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 12 次下载、GitHub Stars 达 0, 最近一次更新时间为 2024 年 03 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「metadata」 「datacite」 「DOI registration」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 dagstuhl/datacite 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 dagstuhl/datacite 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 dagstuhl/datacite 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Strongly opinionated MVC framework for rapid development
Yii2 Component to manage SEO data and metadata
This extension comes with several additional validators, finishers, formElements and general improvements for the usage of the typo3/cms-form-extension, e.g. improved ConfirmationMessage- and Email-Finisher, checkboxes with link-able labels for GDPR or terms & conditions, improved email-validation,
Extremely simple meta tag generator.
Strongly opinionated MVC framework for rapid development
A library to simplify interacting with the EZID API for managing DOIs and ARKs.
统计信息
- 总下载量: 12
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 17
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-03-19