nasa-pds / doi-service Goto Github PK
View Code? Open in Web Editor NEWService and tools for generating DOIs for PDS bundles, collections, and data sets
Home Page: https://nasa-pds.github.io/doi-service
License: Other
Service and tools for generating DOIs for PDS bundles, collections, and data sets
Home Page: https://nasa-pds.github.io/doi-service
License: Other
Do that when we draft the osti record
Organize code as a python package so that it can be tested and packaged with:
$ python setup.py test
$ python setup.py sdist bdist_wheel
use the libraries standard for PDS dev (e.g. requests instead of urllib)
break the code into sub-modules and files,
Associated requirements:
π¦ #16
Propose in comment in the OSTI labels tags which are not managed by the software but that a user could manually fill in.
For example. 'affiliation'.
Heavily relies upon the Status component
Test more "programmatic" way of documenting requirements, possibly link them to tests
Look at behavioral testing (behave package)
Applicable requirements
π¦ #7
This component should enable the status query of:
1..*
) - should return 0..1
DOI summary objects1..*
) - should return 0..*
DOI summary objects1..*
) - should return 0..1
DOI summary objects1..*
) - should return 0..*
DOI summary objects1..*
) - should return 0..*
DOI summary objectsstart
, end
) (ISO-8601 format) - should return 0..*
DOI summary objectsBased upon the DOI summary objects returned from the database, the software should return the summaries in two possible formats (specified via the API):
Applicable requirements
π¦ #30
Purpose of this task is to develop an internal database for maintaining the data in the DOI Summary object.
See https://github.com/NASA-PDS/pds-doi-service/blob/master/docs/design/pds-doi-service-srd.md#listretrieve-a-doi for the data we want to maintain in the database
Validation of the DOI metadata will most likely involve some curation from PDS personnel, however, there are some way we could potentially validate specific values entered. We could check these individually, use something like Schematron to validate.
Below is Schematron we can look through for reference submitted from one our discipline node colleagues.
SBN-DataCite.sch.txt (rename to .sch)
Input: DOI Metadata Object, force_flag (available in the event we want to overwrite a record)
General steps for updates:
Outputs:
TBD
TBD
Applicable requirements
π¦ #8
Request made by Ron:
An issue came up a couple of days ago where the Data Provider noticed that a DOI record, which was added @ OSTI on 2020-02-27, wasnβt showing @ DOI.org.
The OSTI record still has a status of βpendingβ. I regularly check for βpendingβ records using the OSTI GUI. But, the OSTI record doesnβt show up as βpendingβ in the GUI.
The point is that something like a CRON job will need to be in place to ensure that the OSTI βpendingβ records are propagated to DOI.org so that the DOI record(s) are accessible.
See https://github.com/NASA-PDS/pds-deep-archive and https://nasa-pds.github.io/pds-deep-archive/# for an example of the docs. See docs directory for how the structure the RST files: https://github.com/NASA-PDS/pds-deep-archive/tree/master/docs
Related to Tracking Service.
See parent Epic for more details
Should support OSTI originally, but provide the ability to switch to DataCite (or other interface) in the future.
See parent Epic for details
Plug the OSTI schema updated by Ron in the code at the DOI validation step.
See comments for schema to use.
Applicable requirements
π¦ #9
Applicable requirements
π¦ #7
Once a DOI submission enters a pending
state, this handler component is triggered to will iteratively query OSTI for the current status of the pending DOI submission(s). Note: All submissions should enter this state when submitted to OSTI, unless there is an immediate failure returned.
pending_submissions
- this dictionary contains all the submitted objects
Once a status change has been identified for individual members of pending_submissions
:
pending_submissions
(Note: be sure to maintain those submissions whose status has updated so we can report on them once all pending_submissions
have been updated.)Once all members of pending_submissions
have changed status (or a timeout has occurred):
submitted_dois
DOI summary metadataApplicable Requirements:
π¦ #35
This will be a parent ticket to capture all of the anomalies we trace down that will eventually be broken down into sub tickets.
For the future
dataCite: https://support.datacite.org/docs/api
Received some inputs from Ron regarding some example inputs/outputs.
This web service should meet the following use cases:
Example Record Objects: DOI_bundle.xml.txt, DOI_collection_data.xml.txt
User Submits DOI Object
a. A user posts a DOI/IAD Record object
b. The service verifies validity of the object
c. The service posts the object to the Tracking Service
i. Alternatively, the service could post the object to a file staging area or just include in email
c. The service notifies Operator of DOI submission
i. Alternatively, the service could send an email to Operator for manual vetting and submission.
Operator Reserves DOI Object
a. The authenticated Operator submits a DOI object to the service for reserve DOI
b. The service validates the DOI object
c. The service submit the DOI object to the IAD Service and verifies return values
d. The service posts Reserved DOI information to Tracking Service and forwards response to Operator
Operator Release DOI Object
a. The authenticated Operator submits a DOI object to the service for release DOI
b. The service validates the DOI object
c. The service submit the DOI object to the IAD Service and verifies return values
d. The service posts Released/Published DOI information to Tracking Service and forwards response to Operator
Other things to think about:
More details on the IAD API and Schema: https://www.osti.gov/iad2/docs#record-model-fields
requirement
why does this title contain some funky date information there? We should just use the Bundle Title as-is (I checked the Insight label and this is not the title).
https://github.com/NASA-PDS/pds-doi-service/blob/61c593bce85c2b0bb4bd6e912339212f62031b11/input/DOI_Release_20200727_from_draft.xml#L4
by default (for now), this should always be Dataset
https://github.com/NASA-PDS/pds-doi-service/blob/61c593bce85c2b0bb4bd6e912339212f62031b11/input/DOI_Release_20200727_from_draft.xml#L32
this should be defaulted to NASA Planetary Data System
https://github.com/NASA-PDS/pds-doi-service/blob/61c593bce85c2b0bb4bd6e912339212f62031b11/input/DOI_Release_20200727_from_draft.xml#L54
let's camel case this - PDS Operator
https://github.com/NASA-PDS/pds-doi-service/blob/61c593bce85c2b0bb4bd6e912339212f62031b11/input/DOI_Release_20200727_from_draft.xml#L55
product_type_specific
should use the following values:
PDS4 Refereed Data Bundle
PDS4 Refereed Data Collection
for the LIDVID related identifier:
identifier_type
= URN
relation_type
= IsIdenticalTo
is there a reason this related_identifiers
block repeats?
https://github.com/NASA-PDS/pds-doi-service/blob/61c593bce85c2b0bb4bd6e912339212f62031b11/input/DOI_Release_20200727_from_draft.xml#L86
check to see if this mandatory (test without it). if not, remove.
https://github.com/NASA-PDS/pds-doi-service/blob/3ce958942c3a97572eee3958622aceac1a141e39/config/DOI_template_20200407-mustache.xml#L5
See detailed design documentation https://github.com/NASA-PDS-Incubator/pds-doi-service/blob/master/docs/design/pds-doi-service-srd.md
This only include this function as a standalone python command based on a pds-data-doi module.
π¦ #35
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.