Skip to content

Commit

Permalink
First draft of data model
Browse files Browse the repository at this point in the history
  • Loading branch information
markpatton committed Nov 8, 2023
1 parent a0eb37d commit d35d6a6
Show file tree
Hide file tree
Showing 17 changed files with 443 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/dev/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,4 @@ Only Committers on the PASS Eclipse project are able to make changes to the code
* [Docker Dependencies](integration-test-docker-dependencies.md) - Integration Testing and Docker Dependencies
* [Components](components.md) - PASS project components
* [Releasing PASS](release.md) - Releasing the PASS project
* [Data model](model/README.md) - Data model of the PASS project
38 changes: 38 additions & 0 deletions docs/dev/model/Deposit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Deposit

A [Submission](Submission.md) can have multiple Deposits, each to a different [Repository](Repository.md). This entity describes the interaction of PASS with a target [Repository](Repository.md) for an individual [Submission](Submission.md) with the purpose of satisfying one or more [Policies](Policy.md).

| Field | Type | Description
| ---------------- | ------ | -------------
| __id*__ | URI | Unique Deposit URI (autogenerated)
| depositStatusRef | String | A URL or some kind of reference that can be dereferenced, entity body parsed, and used to determine the status of Deposit
| depositStatus* | Enum | Status of deposit ([_see list below_](#deposit-status-options))
| submission* | URI | URI of [Submission](Submission.md) this Deposit is a part of
| repository* | URI | URI of the [Repository](Repository.md) being deposited to
| repositoryCopy | URI | URI of the [Repository Copy](RepositoryCopy.md) representing the copy that is reltaed to this Deposit. The value is null if there is no copy

*required

*Properties automatically generated by the system are documented in [System Properties](SystemProperties.md). These are not available to client tools by default.*

## Deposit status options

These are the possible statuses for a Deposit in the order they could occur. Note that not all repositories will go through every status.

<dl>
<dt>Intermediate status</dt>
<dd>A Deposit with an <em>intermediate</em> status indicates that the processing of the Deposit is not yet
complete. At some indeterminate point in the future, the status <em>may</em> be updated to a <em>terminal</em>
state.
</dd>
<dt>Terminal status</dt>
<dd>A Deposit with a <em>terminal</em> status indicates that the processing of the Deposit is complete.
</dd>
</dl>

| Value | State | Description
| --------- | ----- | ---
| submitted | Intermediate | PASS has sent a package to the target [Repository](Repository.md) and is waiting for an update on the status
| rejected | Terminal | The target [Repository](Repository.md) has rejected the Deposit
| failed | Intermediate | A failure occurred while performing the deposit, it may be re-tried later.
| accepted | Terminal | The target [Repository](Repository.md) has accepted the [Files](File.md) into the repository and they are pending publication if not published already
28 changes: 28 additions & 0 deletions docs/dev/model/File.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Files

Files are associated with a [Submissions](Submission.md) to be used to form [Deposits](Deposit.md) into [Repositories](Repository.md)

| Field | Type | Description |
| ------------- | ------------- | ------------- |
| __id*__ | URI | Unique File URI (autogenerated) |
| name* | String | File name, defaults to filesystem.name |
| uri* | URI | URI to the bytestream that [Deposit](Deposit.md) services will use to retrieve the bytestream for Deposit|
| description | String | Description of file provided by [User](User.md) |
| fileRole | Enum ([_see list below_](#file-role-options)) | Role of the file |
| mimeType | String | Mime-type of file |
| submission* | URI | URI of the [Submission](Submission.md) the File is a part of |

*required

*Properties automatically generated by the system are documented in [System Properties](SystemProperties.md). These are not available to client tools by default.*

## File role options

Status options for grant

| Value | Description |
| ------------- | ------------- |
| manuscript | Author accepted manuscript |
| supplemental | Supplemental material for the [Publication](Publication.md) |
| figure | An image, data plot, map, or schematic |
| table | Tabular data |
15 changes: 15 additions & 0 deletions docs/dev/model/Funder.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Funder

Funder / sponsor of a [Grant](Grant.md).

| Field | Type | Description |
| ------------- | ------------- | ------------- |
| __id*__ | URI | Unique Funder URI (autogenerated) |
| name* | String | Funder name |
| url | URI | Funder URL |
| localKey | String | Local key assigned to the funder within the researcher's institution to support matching between PASS and a local system. The value is in the form of : `domain:type:value`. For a funder at JHU, an example would be`"johnshopkins.edu:funder:8675309"` |
| policy | URI | URI of the [Policy](Policy.md) associated with the Funder |

*required

*Properties automatically generated by the system are documented in [System Properties](SystemProperties.md). These are not available to client tools by default.*
32 changes: 32 additions & 0 deletions docs/dev/model/Grant.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Grant

Grants are imported from the institutional Grant system (COEUS in the case of JHU). They are associated with the Grant's PIs via their [User](User.md) records. Users of PASS can assign the Grants associated with them to [Submissions](Submission.md).

| Field | Type | Description |
| ------------- | ------------- | ------------- |
| __id*__ | URI | Unique Grant URI (autogenerated) |
| awardNumber* | String | Award number from funder |
| awardStatus | Enum ([_see list below_](#status-options)) | Status of award |
| localKey | String | A local key assigned to the Grant within the researcher's institution to support matching between PASS and a local system. The value is in the form of : `domain:type:value`. For a grant at JHU, an example would be`"johnshopkins.edu:grant:8675309"` |
| projectName* | String | Title of the research project |
| awardDate* | DateTime | Date the grant was awarded |
| startDate | DateTime | Date the grant started |
| endDate | DateTime | Date the grant ended |
| primaryFunder* | URI | URI of the [Funder](Funder.md) that is the original source of the funds. This will often be the same as directFunder. |
| directFunder* | URI | URI of the [funding](Funder.md) organization from which funds are directly received. This will often be the same as primaryFunder. |
| pi* | URI | URI of the [User](User.md) who is the Principal investigator |
| coPis | List[URI] | List of URIs of the [[User](User.md)] who are the co-principal investigators |

*required

*Properties automatically generated by the system are documented in [System Properties](SystemProperties.md). These are not available to client tools by default.*

## Status options

Status options for grant

| Value | Description |
| ------------- | ------------- |
| active | Grant currently active |
| pre_award | Award not yet received |
| terminated | Grant period is complete |
27 changes: 27 additions & 0 deletions docs/dev/model/Journal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Journal

A Journal is associated with a [Publication](Publication.md). In some cases, the Journal may be important for determining whether the [User](User.md) needs to manually create a [Submission](Submission.md) through PASS or whether the [Publisher](Publisher.md) has a pre-existing arrangement with the target [Repository](Repository.md). Specifically, in the case of the National Institutes of Health Public Access Policy, many Journals already make arrangements to submit the author's accepted manuscript to PubMed Central directly.

| Field | Type | Description |
| ------------- | ------------- | ------------- |
| __id*__ | URI | Unique Journal URI (autogenerated) |
| journalName* | String | Name of the journal |
| issns | List[String] | Journal ISSNs - Elements are of the form type:value, where type is one of Online or Print, and value is the usual ISSN value xxxx-xxxx. Examples would be Online:1234-5678 and Print:9876-5432. When a type for an ISSN is not known, it should be stored with an empty type (for example :2468-1357).|
| nlmta | String | National Library of Medicine Title Abbreviation |
| pmcParticipation | Enum ([see list below](#pmc-participation-options)) | This field indicates whether a journal participates in the NIH Public Access Program by sending final published article to PMC. If so, whether it requires additional processing fee. |
| publisher | URI | URI for the [Publisher](Publisher.md) of Journal |

*required

*Properties automatically generated by the system are documented in [System Properties](SystemProperties.md). These are not available to client tools by default.*

## PMC Participation options

These are the possible submission methods relating to PMC deposits. A full description of these methods can be found on the [NIH public access website](https://publicaccess.nih.gov/submit_process.htm)

| Value | Description |
| ------------- | ------------- |
| A | PMC deposit route A. Journals automatically post the paper to PMC |
| B | PMC deposit route B. Authors must make special arrangements for some journals and publishers to post the paper directly to PMC |
| C | PMC deposit route C. Authors or their designee must submit manuscripts to NIHMS |
| D | PMC deposit route D. Some publishers will submit manuscripts to NIHMS |
18 changes: 18 additions & 0 deletions docs/dev/model/Policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Policy

A Policy describes the access compliance requirements for a specific [Funder](Funder.md) or Institution. These Policies are used to determine which [Repositories](Repository.md) a [Publication](Publication.md) should be [submitted](Submission.md) to in order to be in compliance with its associated [Grants](Grant.md) and the User's institutional policies.

| Field | Type | Description |
| ------------- | ------------- | ------------- |
| __id*__ | URI | Unique Policy URI (autogenerated) |
| title* | String | Title of policy e.g. "NIH Public Access Policy" |
| description | String | Several sentence description of policy |
| policyUrl | URI | A link to the actual policy on the policy-owner's page |
| repositories* | List[URI] | List of URIs for [Repositories](Repository.md) that can satisfying this Policy |
| institution | URI | URI of the Institution whose Policy this is. For the first version of PASS, there will be no actual Institution model, this will be added at a later date, so if there is an institution assigned, it will always be JHU |

*required

*Properties automatically generated by the system are documented in [System Properties](SystemProperties.md). These are not available to client tools by default.*

_Note: this is basic at the moment. Eventually additional fields to help with application of policy logic could be added e.g. materialType to support data policies, some sense of whether the policy is required or can be overridden by complying with another policy etc._
17 changes: 17 additions & 0 deletions docs/dev/model/Publication.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Publication
Publication metadata to be associated with one or more [Submission](Submission.md)

| Field | Type | Description |
| ------------- | ------------- | ------------- |
| __id*__ | URI | Unique Submission URI (autogenerated) |
| title* | String | Title of work represented by Submission e.g. the title of the article |
| publicationAbstract | String | Abstract for work represented by Submission |
| doi | String | DOI of item being submitted, if available |
| pmid | String | PMID of item being submitted, if available |
| journal | URI | URI of [Journal](Journal.md) the Submission is part of (if article) |
| volume | String | Volume of journal that contains item (if article) |
| issue | String | Issue of journal that contains item (if article) |

*required

*Properties automatically generated by the system are documented in [System Properties](SystemProperties.md). These are not available to client tools by default.*
26 changes: 26 additions & 0 deletions docs/dev/model/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# PASS Data Model

In this project you will find
* [Model Objects](#model-objects) - a description of the fields for each object in the model
* [Model Diagram](#model-diagram) - a diagram showing the relationships between each object

## Model Objects
The data model consists of the following components. Each is documented in full on its own page, you can see all of these pages in the [documentation](documentation/) folder

* [Deposit](Deposit.md)
* [File](File.md)
* [Funder](Funder.md)
* [Grant](Grant.md)
* [Journal](Journal.md)
* [Policy](Policy.md)
* [Publication](Publication.md)
* [Repository](Repository.md)
* [RepositoryCopy](RepositoryCopy.md)
* [Submission](Submission.md)
* [SubmissionEvent](SubmissionEvent.md)
* [User](User.md)

## Model Diagram

![data model](pass_data_model.jpg)

32 changes: 32 additions & 0 deletions docs/dev/model/README.md~
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# PASS Data Model

PASS provides a unified user interface that allow its users to deposit their manuscripts into multiple repositories as required by the associated funding agency's public access policies.

In this project you will find
* [Model Objects](#model-objects) - a description of the fields for each object in the model
* [Model Diagram](#model-diagram) - a diagram showing the relationships between each object

## Model Objects
The data model consists of the following components. Each is documented in full on its own page, you can see all of these pages in the [documentation](documentation/) folder

* [Contributor](documentation/Contributor.md)
* [Deposit](documentation/Deposit.md)
* [File](documentation/File.md)
* [Funder](documentation/Funder.md)
* [Grant](documentation/Grant.md)
* [Journal](documentation/Journal.md)
* [Policy](documentation/Policy.md)
* [Publication](documentation/Publication.md)
* [Publisher](documentation/Publisher.md)
* [Repository](documentation/Repository.md)
* [RepositoryCopy](documentation/RepositoryCopy.md)
* [Submission](documentation/Submission.md)
* [SubmissionEvent](documentation/SubmissionEvent.md)
* [User](documentation/User.md)

The system also automatically creates additional properties for each entity. These are documented in [System Properties](SystemProperties.md).

## Model Diagram

![data model](pass_data_model.jpg)

42 changes: 42 additions & 0 deletions docs/dev/model/Repository.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Repository

A Repository is the target of a [Deposit](Deposit.md). It is a platform where [copies](RepositoryCopy.md) of [publications](Publication.md) can be [deposited](Deposit.md) in order to comply with [Funder](Funder.md) and institutional access [policies](Policy.md).

| Field | Type | Description |
| ------------- | ------------- | ------------- |
| __id*__ | URI | Unique Repository URI (autogenerated) |
| name* | String | Name of repository e.g. "PubMed Central" |
| description | String | Several sentence description of repository |
| url | URI | URL to the homepage of the repository so that PASS users can view the platform before deciding whether to participate in it |
| agreementText | String | The legal text that a `submitter` must agree to in order to submit a publication to this Repository |
| formSchema | String | _(deprecated- do not use this. Use `schema` instead)_ Stringified JSON representing a form template to be loaded by the front-end when this Repository is selected |
| integrationType | Enum ([_see list below_](#integration-type-options)) | Type of integration that PASS has with the Repository |
|repositoryKey | String | Key that is unique to this Repository instance within PASS. Used to look up the Repository when its URI is not available (e.g. prior to the creation of this Repository resource in Fedora). See below for a [_list of currently used keys_](#repository-key-values). |
| schemas | List[URI] | Contains a list of URLs that link to JSON schema documents describing the repository's metadata requirements |


*required

*Properties automatically generated by the system are documented in [System Properties](SystemProperties.md). These are not available to client tools by default.*

## Integration type options

These are the possible types of integration a Repository can have with PASS.

| Value | Description |
| --------------- | ------------- |
| full | PASS can make [Deposits](Deposit.md) to this Repository, and will received updates about its status |
| one-way | PASS can make [Deposits](Deposit.md) to this Repository but will not automatically receive updates about its status |
| web-link | A deposit cannot automatically be made to this Repository from PASS, only a web link can be created. |

## Repository key values

These are the repository keys currently used in PASS. This list will grow as more repositories are supported.

| Value | Repository name |
| --------------- | ------------- |
| pmc | [PubMed Central](https://www.ncbi.nlm.nih.gov/pmc/) |
| jscholarship | [Johns Hopkins JScholarship](https://jscholarship.library.jhu.edu/) |
| eric | [Education Resources Information Center](https://eric.ed.gov/) (ERIC) |
| dec | [Development Experience Clearinghouse](https://dec.usaid.gov/dec/) (DEC) |
| dash | [Harvard DASH](https://dash.harvard.edu/) |
28 changes: 28 additions & 0 deletions docs/dev/model/RepositoryCopy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Repository Copy

A Repository Copy represents a copy of a [Publication](Publication.md) that exists in a target [Repository](Repository.md). The Repository Copy either (1) was the result of an accepted [Deposit](Deposit.md) from PASS, in which case there would be a link to the Copy from the related Deposit record, or (2) was created outside of PASS by some other process. In this second instance, the PASS system stores the information to help determine whether a Publication is already compliance.

| Field | Type | Description |
| ------------- | ------------- | ------------- |
| __id*__ | URI | Unique Repository Copy URI (autogenerated) |
| externalIds | List[String] | IDs assigned to this entity by the target repository |
| copyStatus* | Enum ([_see list below_](#copy-status-options)) | Status of the copy in the external repository's workflow |
| accessUrl | URI | URL to access the item in the repository, could allow Users to see the final result |
| publication* | URI | URI of the [Publication](Publication.md) that this is a copy of |
| repository* | URI | URI of the [Repository](Repository.md) being deposited to |

*required

*Properties automatically generated by the system are documented in [System Properties](SystemProperties.md). These are not available to client tools by default.*

## Copy status options

These are the possible statuses for a Deposit in the order they could occur. Note that not all repositories will go through every status.

| Value | Description |
| --------------- | ------------- |
| accepted | The target [Repository](Repository.md) has indicated that the Deposit has been accepted|
| in-progress | The target [Repository](Repository.md) is processing the files |
| stalled | The target [Repository](Repository.md) has detected a problem that has caused the progress to stall. This will likely require some direct interaction with the repository to re-initiate the process. Examples include, when there are incorrect files, or when a user did not respond to a validation request in a resonable time. |
| complete | The target [Repository](Repository.md) has accepted the files, and publication is pending if not already complete |
| rejected | The target [Repository](Repository.md) has rejected the files. |
Loading

0 comments on commit d35d6a6

Please sign in to comment.