Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.0 fdo profile #138

Merged
merged 11 commits into from
Oct 7, 2024
32 changes: 20 additions & 12 deletions data-model/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,37 @@ COPY fdo-profile/digital-specimen/0.1.0/schema/ schema-root/schemas/fdo-profile/
COPY fdo-profile/doi-kernel/0.1.0/schema schema-root/schemas/fdo-profile/doi-kernel/0.1.0
COPY fdo-profile/handle-kernel/0.1.0/schema schema-root/schemas/fdo-profile/handle-kernel/0.1.0
COPY fdo-profile/data-mapping/0.1.0/schema schema-root/schemas/fdo-profile/data-mapping/0.1.0
COPY fdo-profile/mas/0.1.0/schema schema-root/schemas/fdo-profile/mas/0.1.0
COPY fdo-profile/machine-annotation-service/0.1.0/schema schema-root/schemas/fdo-profile/mas/0.1.0
COPY fdo-profile/digital-media/0.1.0/schema schema-root/schemas/fdo-profile/digital-media/0.1.0
COPY fdo-profile/organisation/0.1.0/schema schema-root/schemas/fdo-profile/organisation/0.1.0
COPY fdo-profile/source-system/0.1.0/schema schema-root/schemas/fdo-profile/source-system/0.1.0
COPY fdo-profile/tettris-service/0.1.0/schema schema-root/schemas/fdo-profile/tettris-service/0.1.0
COPY fdo-profile/tombstone/0.1.0/schema schema-root/schemas/fdo-profile/tombstone/0.1.0
COPY fdo-profile/virtual-collection/0.1.0/schema schema-root/schemas/fdo-profile/virtual-collection/0.1.0

COPY fdo-profile/annotation/1.0.0/schema schema-root/schemas/fdo-profile/annotation/1.0.0
COPY fdo-profile/handle-kernel/1.0.0/schema schema-root/schemas/fdo-profile/handle-kernel/1.0.0
COPY fdo-profile/data-mapping/1.0.0/schema schema-root/schemas/fdo-profile/data-mapping/1.0.0
COPY fdo-profile/machine-annotation-service/1.0.0/schema schema-root/schemas/fdo-profile/machine-annotation-service/1.0.0
COPY fdo-profile/doi-kernel/1.0.0/schema schema-root/schemas/fdo-profile/doi-kernel/1.0.0
COPY fdo-profile/source-system/1.0.0/schema schema-root/schemas/fdo-profile/source-system/1.0.0
COPY fdo-profile/digital-media/1.0.0/schema schema-root/schemas/fdo-profile/digital-media/1.0.0
COPY fdo-profile/digital-specimen/1.0.0/schema/ schema-root/schemas/fdo-profile/digital-specimen/1.0.0
COPY fdo-profile/tombstone/1.0.0/schema schema-root/schemas/fdo-profile/tombstone/1.0.0


# Latest FDO Profile schemas
COPY fdo-profile/annotation/0.1.0/schema schema-root/schemas/fdo-profile/annotation/latest
COPY fdo-profile/digital-specimen/0.1.0/schema/ schema-root/schemas/fdo-profile/digital-specimen/latest
COPY fdo-profile/doi-kernel/0.1.0/schema schema-root/schemas/fdo-profile/doi-kernel/latest
COPY fdo-profile/handle-kernel/0.1.0/schema schema-root/schemas/fdo-profile/handle-kernel/latest
COPY fdo-profile/data-mapping/0.1.0/schema schema-root/schemas/fdo-profile/data-mapping/latest
COPY fdo-profile/mas/0.1.0/schema schema-root/schemas/fdo-profile/mas/latest
COPY fdo-profile/digital-media/0.1.0/schema schema-root/schemas/fdo-profile/digital-media/latest
COPY fdo-profile/organisation/0.1.0/schema schema-root/schemas/fdo-profile/organisation/latest
COPY fdo-profile/source-system/0.1.0/schema schema-root/schemas/fdo-profile/source-system/latest
COPY fdo-profile/tettris-service/0.1.0/schema schema-root/schemas/fdo-profile/tettris-service/latest
COPY fdo-profile/annotation/1.0.0/schema schema-root/schemas/fdo-profile/annotation/latest
COPY fdo-profile/doi-kernel/1.0.0/schema schema-root/schemas/fdo-profile/doi-kernel/latest
COPY fdo-profile/handle-kernel/1.0.0/schema schema-root/schemas/fdo-profile/handle-kernel/latest
COPY fdo-profile/data-mapping/1.0.0/schema schema-root/schemas/fdo-profile/data-mapping/latest
COPY fdo-profile/machine-annotation-service/1.0.0/schema schema-root/schemas/fdo-profile/mas/latest
COPY fdo-profile/source-system/1.0.0/schema schema-root/schemas/fdo-profile/source-system/latest
COPY fdo-profile/digital-media/1.0.0/schema schema-root/schemas/fdo-profile/digital-media/latest
COPY fdo-profile/digital-specimen/1.0.0/schema schema-root/schemas/fdo-profile/digital-specimen/latest
COPY fdo-profile/tombstone/1.0.0/schema schema-root/schemas/fdo-profile/tombstone/latest

COPY fdo-profile/tettris-service/0.1.0/schema schema-root/schemas/fdo-profile/tettris-service/latest
COPY fdo-profile/organisation/0.1.0/schema schema-root/schemas/fdo-profile/organisation/latest
COPY fdo-profile/virtual-collection/0.1.0/schema schema-root/schemas/fdo-profile/virtual-collection/latest

# Versioned FDO Type schemas
Expand Down
wouteraddink marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"data": {
"type": "https://doi.org/21.T11148/cf458ca9ee1d44a5608f",
"attributes": {
"locations": [
"https://coldb.mnhn.fr/catalognumber/mnhn/ec/ec23946"
],
"targetPid": "https://hdl.handle.net/20.5000.10235/aaa-bbb-ccc",
"targetType": "https://doi.org/21.T11148/894b1e6cad57e921764e",
"targetTypeName": "DigitalSpecimen",
"annotationHash": "b3dada2d-396b-cab2-665e-125659fc7ae6"
}
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add VIEW=JSON to 10320/loc for consistency (although we do not currently have a HTML view for the annotation)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is now implemented as ID=JSON but the ID should not change, a VIEW parameter should be added. ID attributes are given an integer in the Handle documentation, I am not sure that is actually required but people using Handles may expect an integer there so I would keep the ID integers. They may be handy if there are for example multiple URLS with VIEW=JSON, to display one of them with preference using a weight (e.g. one is served in Chine, the other in Europe and for traffic coming from Europe you may prefer the one served from a location in Europe).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not 100% sure if the handle system supports that. In their documentation, they say:

The currently defined selection methods are:

  • Locatt (select by id)
  • country
  • weight

However, they also say:

The attributes for the set of locations, as well as each location entry in the set, are open-ended to allow for future capabilities.

So it might support it, it might not. Will need to test. If it fails, using the id this way should work. There's nothing in the documentation that says that the id needs to be an integer.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok, how I read the documentation you should be able to add any attribute you like. If it does not work then please use the id instead but having both attributes would be more flexible.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

pidissuerName should be DiSSCo (DataCite does not issue Handles for our annotations), pidIssuer is the ROR for DiSSCo

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

now pidIssuerName is changed to the ROR, but the ROR should be in pidIssuer and pidIssuerName should be DiSSCo

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"10320/loc": "<locations><location href=\"https://dev.dissco.tech/api/v1/annotations/TEST/FFR-RTL-B8K\" id=\"0\" view=\"JSON\" weight=\"1\"/></locations>",
"fdoProfile": "https://doi.org/21.T11148/cf458ca9ee1d44a5608f",
"fdoRecordLicenseId": "https://spdx.org/licenses/CC0-1.0.json",
"fdoRecordLicenseName": "CC0 1.0 Universal",
"digitalObjectType": "https://doi.org/21.T11148/cf458ca9ee1d44a5608f",
"digitalObjectName": "Annotation",
"pid": "https://hdl.handle.net/TEST/FFR-RTL-B8K",
"pidIssuer": "https://ror.org/04wxnsj81",
"pidIssuerName": "Distributed System of Scientific Collections",
"pidRecordIssueDate": "2023-11-17T11:57:02.933Z",
"pidRecordIssueNumber": 1,
"pidStatus": "ACTIVE",
"targetPid": "https://hdl.handle.net/20.500.125/1111111",
"targetType": "DigitalSpecimen",
"annotationHash": "faab142f-40a5-fc15-7085-49c23301c608"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"$id": "https://schemas.dissco.tech/schemas/fdo-profile/annotation/1.0.0/annotation-request-attributes.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "Attributes of a request to the DiSSCo PID API to create a FDO Record for an annotation",
"$comment": "FDO Profile Version 1.0.0",
"properties": {
"locations": {
"type": "array",
"items": {
"type": "string"
},
"description": "Additional URLs to be appended to the 10320/loc field"
},
"targetPid": {
"type": "string",
"pattern": "https:\/\/(doi\\.org\/10\\.\\w+/\\w+$|hdl\\.handle\\.net\/[\\w.]+\/[\\w-]+$)",
"description": "A Handle or DOI of the object that is being annotated"
},
"targetType": {
"type": "string",
"description": "Map to ods:type in annotation model"
},
"targetTypeName": {
"type": "string",
"description": "Human-readable name of the above target type."
},
"annotationHash": {
"type": "string",
"format": "uuid",
"description": "MD5 hash based on target, motivation, and creator. Internally generated by DiSSCo Annotation Processing Service for machine annotations"
}
},
"required": [
"targetPid",
"targetType"
],
"additionalProperties": false
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"$id": "https://schemas.dissco.tech/schemas/fdo-profile/annotation/1.0.0/annotation-request.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"description": "Schema for making annotation-creation requests to the DiSSCo Handle Manager",
"$comment": "FDO Profile Version 1.0.0",
"properties": {
"data": {
"type": "object",
"properties": {
"type": {
"const": "https://doi.org/21.T11148/cf458ca9ee1d44a5608f",
"description": "PID of the Digital Object Type"
},
"attributes": {
"type": "object",
"$ref": "https://schemas.dissco.tech/schemas/fdo-profile/annotation/1.0.0/anotation-request-attributes.json"
}
},
"required": [
"type",
"attributes"
],
"additionalProperties": false
}
},
"required": [
"data"
],
"additionalProperties": false
}
172 changes: 172 additions & 0 deletions data-model/fdo-profile/annotation/1.0.0/schema/annotation.json
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update idx6 example with 10.3535 prefix, add VIEW=JSON to10320/loc

Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
{
"$id": "https://schemas.dissco.tech/schemas/fdo-profile/annotation/1.0.0/annotation-fdo-profile.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "FDO Profile for DiSSCo Annotations",
"$comment": "FDO Profile Version 1.0.0",
"properties": {
"fdoProfile": {
"description": "PID to a machine readable description of the attributes in the FDO record",
"const": "https://doi.org/21.T11148/cf458ca9ee1d44a5608f",
"$comment": "idx = 1"
},
"fdoRecordLicenseId": {
"const": "https://spdx.org/licenses/CC0-1.0.json",
"description": "The licence for the FDO record, required to be always public domain",
"$comment": "idx = 2"
},
"fdoRecordLicenseName": {
"const": "CC0 1.0 Universal",
"description": "CC0 1.0 Universal",
"$comment": "idx = 3"
},
"digitalObjectType": {
"description": "PID to a description of the Type of digital object that defines the metadata, bit sequences (if any) and operations for the object",
"const": "https://doi.org/21.T11148/cf458ca9ee1d44a5608f",
"$comment": "idx = 4"
},
"digitalObjectName": {
"type": "string",
"description": "Name of the object type for humans",
"example": "digital specimen type 1",
"$comment": "idx = 5"
},
"pid": {
"type": "string",
"description": "The PID of which the FDO record is part, in DiSSCo this is a Handle or DOI. It is recommended to store this pid also in the local collection management system for the specimen.",
"example": "https://doi.org/10.22/GEE-W3J-HL2",
"$comment": "idx = 6"
},
"pidIssuer": {
"type": "string",
"description": "In case of a DOI, this is a PID for the DOI Registration Agency",
"example": "https://hdl.handle.net/10.17183",
"$comment": "idx = 7"
},
"pidIssuerName": {
"type": "string",
"description": "Human-readable name of the PID issuer",
"example": "DataCite",
"$comment": "idx = 8"
},
"pidRecordIssueDate": {
"type": "string",
"description": "Date the PID record was created",
"example": "2023-10-16T12:08:37.494Z",
"$comment": "idx = 9"
},
"pidRecordIssueNumber": {
"type": "integer",
"description": "Starts with 1 and is incrementally increased by 1 every time the pid record is updated. Compatible with DOI schema requirements.",
"example": "2",
"$comment": "idx = 10"
},
"pidStatus": {
"enum": [
"TOMBSTONE",
"DRAFT",
"ACTIVE"
],
"description": "A PID is considered to have a lifecycle, PID status indicates the status in the life cycle, e.g. draft, active, retired. PID statuses are described further in the PID infrastructure design.",
"$comment": "idx = 11"
},
"HS_ADMIN": {
"type": "string",
"description": "Administrative information for PID profile",
"$comment": "idx = 100"
},
"10320/loc": {
"type": "string",
"description": "XML document describing location(s) of the resource",
"$comment": "idx = 101",
"example": "<locations><location href=\"https://dev.dissco.tech/api/v1/annotations/TEST/FFR-RTL-B8K\" id=\"0\" weight=\"1\"/></locations>"
},
"tombstoneText": {
"type": "string",
"description": "A reason why the Digital Object was tombstoned",
"examples": [
"This is a duplicate of XXX",
"This object was made by mistake"
],
"$comment": "idx = 30"
},
"hasRelatedPid": {
"type": "array",
"description": "The PIDs of the object the tombstoned object is related to",
"items": {
"type": "object",
"items": {
"type": "object",
"properties": {
"pid": {
"type": "string",
"description": "The PID of the related object",
"examples": [
"https://doi.org/10.1234/abcd"
]
},
"relationshipType": {
"type": "string",
"description": "The type of relationship between the tombstoned object and the related object",
"examples": [
"isObsoletedBy",
"isIdenticalTo"
]
}
},
"additionalProperties": false
},
"$comment": "idx = 31"
}
},
"tombstoneDate": {
"type": "string",
"description": "Timestamp the Digital Object was tombstoned and no longer active.",
"format": "date-time",
"examples": [
"2021-06-01T12:00:000Z"
],
"$comment": "idx = 32"
},
"targetPid": {
"type": "string",
"description": "A Handle or DOI of the object that is being annotated",
"examples": [
"https:/hdl.handle.net/20.5000.1025/ABC-123-XYZ"
],
"pattern": "https://(doi\\.org/10\\.\\w+/\\w+$|hdl\\.handle\\.net/[\\w.]+/[\\w-]+$)",
"$comment": "idx = 500"
},
"targetType": {
"type": "string",
"description": "Map to ods:type in annotation model",
"$comment": "idx = 501"
},
"targetTypeName": {
"type": "string",
"description": "Human-readable name of the above target type",
"$comment": "idx = 502"
},
"annotationHash": {
"type": "string",
"description": "MD5 hash based on target, motivation, and creator. Internally generated by DiSSCo Annotation Processing Service for machine annotations",
"$comment": "idx = 502"
}
},
"additionalProperties": false,
"required": [
"fdoProfile",
"fdoRecordLicenseId",
"fdoRecordLicenseName",
"digitalObjectType",
"digitalObjectName",
"pid",
"pidIssuer",
"pidIssuerName",
"pidRecordIssueDate",
"pidRecordIssueNumber",
"10320/loc",
"pidStatus",
"targetPid",
"targetType"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
"type": "string",
"description": "XML document describing location(s) of the resource",
"$comment": "idx = 101",
"example": "<locations><location href=\"https://dev.dissco.tech/api/v1/annotations/TEST/FFR-RTL-B8K\" id=\"0\" weight=\"1\"/></locations>"
"example": "<locations><location href=\"https://dev.dissco.tech/api/v1/annotations/TEST/FFR-RTL-B8K\" id=\"JSON\" weight=\"1\"/></locations>"
},
"tombstoneText": {
"type": "string",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"data": {
"type": "https://doi.org/21.T11148/ce794a6f4df42eb7e77e",
"attributes": {
"sourceDataStandard": "dwc"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"10320/loc": "<locations><location href=\"https://dev-orchestration.dissco.tech/api/v1/mapping/TEST/QDD-Y07-QK6\" id=\"0\" view=\"JSON\" weight=\"1\"/></locations>",
"fdoProfile": "https://doi.org/21.T11148/ce794a6f4df42eb7e77e",
"fdoRecordLicense": "https://spdx.org/licenses/CC0-1.0.json",
"fdoRecordLicenseName": "CC0 1.0 Universal",
"digitalObjectType": "https://doi.org/21.T11148/ce794a6f4df42eb7e77e",
"digitalObjectName": "Mapping",
"pid": "https://hdl.handle.net/TEST/QDD-Y07-QK6",
"pidRecordIssueDate": "2023-09-01T13:05:08.375Z",
"pidRecordIssueNumber": 1,
"pidStatus": "ACTIVE",
"sourceDataStandard": "dwc"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"10320/loc": "<locations><location href=\"https://dev-orchestration.dissco.tech/api/v1/mapping/TEST/QDD-Y07-QK6\" id=\"0\" view=\"JSON\" weight=\"1\"/></locations>",
"fdoProfile": "https://doi.org/21.T11148/ce794a6f4df42eb7e77e",
"fdoRecordLicenseId": "https://spdx.org/licenses/CC0-1.0.json",
"fdoRecordLicenseName": "CC0 1.0 Universal",
"digitalObjectType": "https://doi.org/21.T11148/ce794a6f4df42eb7e77e",
"digitalObjectName": "Mapping",
"pid": "https://hdl.handle.net/TEST/QDD-Y07-QK6",
"pidRecordIssueDate": "2023-09-01T13:05:08.375Z",
"pidRecordIssueNumber": 1,
"pidStatus": "ACTIVE",
"sourceDataStandard": "dwc",
"tombstoneText": "Resource deleted by admin",
"tombstoneDate": "2024-11-17T11:57:02.933Z"
}
Loading
Loading