diff --git a/data-model/Dockerfile b/data-model/Dockerfile
index 09256e4..85bcb5a 100644
--- a/data-model/Dockerfile
+++ b/data-model/Dockerfile
@@ -8,7 +8,7 @@ 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
@@ -16,21 +16,29 @@ COPY fdo-profile/tettris-service/0.1.0/schema schema-root/schemas/fdo-profile/te
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
diff --git a/data-model/fdo-profile/annotation/1.0.0/examples/example-annotation-request.json b/data-model/fdo-profile/annotation/1.0.0/examples/example-annotation-request.json
new file mode 100644
index 0000000..b24b7ca
--- /dev/null
+++ b/data-model/fdo-profile/annotation/1.0.0/examples/example-annotation-request.json
@@ -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"
+ }
+ }
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/annotation/1.0.0/examples/example-annotation.json b/data-model/fdo-profile/annotation/1.0.0/examples/example-annotation.json
new file mode 100644
index 0000000..83c8153
--- /dev/null
+++ b/data-model/fdo-profile/annotation/1.0.0/examples/example-annotation.json
@@ -0,0 +1,17 @@
+{
+ "10320/loc": "",
+ "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"
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/annotation/1.0.0/schema/annotation-request-attributes.json b/data-model/fdo-profile/annotation/1.0.0/schema/annotation-request-attributes.json
new file mode 100644
index 0000000..95cf15d
--- /dev/null
+++ b/data-model/fdo-profile/annotation/1.0.0/schema/annotation-request-attributes.json
@@ -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
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/annotation/1.0.0/schema/annotation-request.json b/data-model/fdo-profile/annotation/1.0.0/schema/annotation-request.json
new file mode 100644
index 0000000..fc68724
--- /dev/null
+++ b/data-model/fdo-profile/annotation/1.0.0/schema/annotation-request.json
@@ -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
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/annotation/1.0.0/schema/annotation.json b/data-model/fdo-profile/annotation/1.0.0/schema/annotation.json
new file mode 100644
index 0000000..b2c0895
--- /dev/null
+++ b/data-model/fdo-profile/annotation/1.0.0/schema/annotation.json
@@ -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": ""
+ },
+ "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"
+ ]
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/data-mapping/0.1.0/schema/data-mapping.json b/data-model/fdo-profile/data-mapping/0.1.0/schema/data-mapping.json
index a56f915..87e19f8 100644
--- a/data-model/fdo-profile/data-mapping/0.1.0/schema/data-mapping.json
+++ b/data-model/fdo-profile/data-mapping/0.1.0/schema/data-mapping.json
@@ -98,7 +98,7 @@
"type": "string",
"description": "XML document describing location(s) of the resource",
"$comment": "idx = 101",
- "example": ""
+ "example": ""
},
"tombstoneText": {
"type": "string",
diff --git a/data-model/fdo-profile/data-mapping/1.0.0/examples/example-data-mapping-request.json b/data-model/fdo-profile/data-mapping/1.0.0/examples/example-data-mapping-request.json
new file mode 100644
index 0000000..20a0961
--- /dev/null
+++ b/data-model/fdo-profile/data-mapping/1.0.0/examples/example-data-mapping-request.json
@@ -0,0 +1,8 @@
+{
+ "data": {
+ "type": "https://doi.org/21.T11148/ce794a6f4df42eb7e77e",
+ "attributes": {
+ "sourceDataStandard": "dwc"
+ }
+ }
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/data-mapping/1.0.0/examples/example-data-mapping.json b/data-model/fdo-profile/data-mapping/1.0.0/examples/example-data-mapping.json
new file mode 100644
index 0000000..f35b96e
--- /dev/null
+++ b/data-model/fdo-profile/data-mapping/1.0.0/examples/example-data-mapping.json
@@ -0,0 +1,13 @@
+{
+ "10320/loc": "",
+ "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"
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/data-mapping/1.0.0/examples/example-tombstoned-data-mapping-fdo.json b/data-model/fdo-profile/data-mapping/1.0.0/examples/example-tombstoned-data-mapping-fdo.json
new file mode 100644
index 0000000..661c82e
--- /dev/null
+++ b/data-model/fdo-profile/data-mapping/1.0.0/examples/example-tombstoned-data-mapping-fdo.json
@@ -0,0 +1,15 @@
+{
+ "10320/loc": "",
+ "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"
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/data-mapping/1.0.0/schema/data-mapping-request-attributes.json b/data-model/fdo-profile/data-mapping/1.0.0/schema/data-mapping-request-attributes.json
new file mode 100644
index 0000000..68dcb11
--- /dev/null
+++ b/data-model/fdo-profile/data-mapping/1.0.0/schema/data-mapping-request-attributes.json
@@ -0,0 +1,24 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/data-mapping/1.0.0/data-mapping-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 a generic Handle",
+ "$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"
+ },
+ "sourceDataStandard": {
+ "type": "string",
+ "description": "Indicates standard source data adheres to, such as \"dwc\" or \"abcd\"",
+ "$comment": "idx = 700"
+ }
+ },
+ "required": [
+ "sourceDataStandard"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/data-mapping/1.0.0/schema/data-mapping-request.json b/data-model/fdo-profile/data-mapping/1.0.0/schema/data-mapping-request.json
new file mode 100644
index 0000000..5856d96
--- /dev/null
+++ b/data-model/fdo-profile/data-mapping/1.0.0/schema/data-mapping-request.json
@@ -0,0 +1,31 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/data-mapping/1.0.0/data-mapping-request.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "description": "Schema for making data-mapping 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/ce794a6f4df42eb7e77e",
+ "description": "PID of the Digital Object Type"
+ },
+ "attributes": {
+ "type": "object",
+ "$ref": "https://schemas.dissco.tech/schemas/fdo-profile/data-mapping/1.0.0/data-mapping-request-attributes.json"
+ }
+ },
+ "required": [
+ "type",
+ "attributes"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "data"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/data-mapping/1.0.0/schema/data-mapping.json b/data-model/fdo-profile/data-mapping/1.0.0/schema/data-mapping.json
new file mode 100644
index 0000000..01a9f54
--- /dev/null
+++ b/data-model/fdo-profile/data-mapping/1.0.0/schema/data-mapping.json
@@ -0,0 +1,151 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/data-mapping/1.0.0/data-mapping-fdo-profile.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "description": "Kernel from which all DiSSCo FAIR Digital Object profiles are derived",
+ "$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/ce794a6f4df42eb7e77e",
+ "$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/ce794a6f4df42eb7e77e",
+ "$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": ""
+ },
+ "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"
+ },
+ "sourceDataStandard": {
+ "type": "string",
+ "description": "Indicates standard source data adheres to, such as \"dwc\" or \"abcd\"",
+ "$comment": "idx=700"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "fdoProfile",
+ "fdoRecordLicenseId",
+ "fdoRecordLicenseName",
+ "digitalObjectType",
+ "digitalObjectName",
+ "pid",
+ "pidRecordIssueDate",
+ "pidRecordIssueNumber",
+ "10320/loc",
+ "pidStatus",
+ "sourceDataStandard"
+ ]
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/digital-media/1.0.0/examples/example-digital-media-request.json b/data-model/fdo-profile/digital-media/1.0.0/examples/example-digital-media-request.json
new file mode 100644
index 0000000..bf2493a
--- /dev/null
+++ b/data-model/fdo-profile/digital-media/1.0.0/examples/example-digital-media-request.json
@@ -0,0 +1,15 @@
+{
+ "data": {
+ "type": "https://doi.org/21.T11148/bbad8c4e101e8af01115",
+ "attributes": {
+ "referentName": "mediaphoto.mnhn.fr/media/1620403020391dDLZHWzqVzfk5Az3",
+ "mediaHost": "https://ror.org/0566bfb96",
+ "mediaHostName": "Naturalis Biodiversity Center",
+ "linkedDigitalObjectPid": "https://doi.org/10.22/GR0-WWV-3RT",
+ "linkedDigitalObjectType": "https://doi.org/21.T11148/d8de0819e144e4096645",
+ "primaryMediaId": "https://mediaphoto.mnhn.fr/media/1620403020391dDLZHWzqVzfk5Az3",
+ "licenseName": "https://spdx.org/licenses/CC0-1.0.json",
+ "rightsHolder": "https://ror.org/0566bfb96"
+ }
+ }
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/digital-media/1.0.0/examples/example-digital-media.json b/data-model/fdo-profile/digital-media/1.0.0/examples/example-digital-media.json
new file mode 100644
index 0000000..bd8360c
--- /dev/null
+++ b/data-model/fdo-profile/digital-media/1.0.0/examples/example-digital-media.json
@@ -0,0 +1,24 @@
+{
+ "10320/loc": "",
+ "fdoProfile": "https://doi.org/21.T11148/bbad8c4e101e8af01115",
+ "fdoRecordLicenseId": "https://spdx.org/licenses/CC0-1.0.json",
+ "fdoRecordLicenseName": "CC0 1.0 Universal",
+ "digitalObjectType": "https://doi.org/21.T11148/bbad8c4e101e8af01115",
+ "digitalObjectName": "MediaObject",
+ "pid": "https://hdl.handle.net/TEST/FFR-RTL-B8K",
+ "pidIssuer": "https://ror.org/04wxnsj81",
+ "pidIssuerName": "DataCite",
+ "issuedForAgent": "https://ror.org/0566bfb96",
+ "issuedForAgentName": "Naturalis Biodiversity Center",
+ "pidRecordIssueDate": "2023-11-17T11:57:02.933Z",
+ "pidRecordIssueNumber": 1,
+ "pidStatus": "ACTIVE",
+ "referentName": "Some digital object",
+ "mediaHost": "https://ror.org/0566bfb96",
+ "mediaHostName": "Naturalis Biodiversity Center",
+ "linkedDigitalObjectPid": "https://doi.org/10.22/GR0-WWV-3RT",
+ "linkedDigitalObjectType": "https://doi.org/21.T11148/d8de0819e144e4096645",
+ "primaryMediaId": "https://mediaphoto.mnhn.fr/media/1620403020391dDLZHWzqVzfk5Az3",
+ "licenseName": "https://spdx.org/licenses/CC0-1.0.json",
+ "rightsHolder": "https://ror.org/0566bfb96"
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/digital-media/1.0.0/schema/digital-media-request-attributes.json b/data-model/fdo-profile/digital-media/1.0.0/schema/digital-media-request-attributes.json
new file mode 100644
index 0000000..1ba00b0
--- /dev/null
+++ b/data-model/fdo-profile/digital-media/1.0.0/schema/digital-media-request-attributes.json
@@ -0,0 +1,104 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/digital-media/1.0.0/digital-media-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 Digital Media",
+ "$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"
+ },
+ "referentName": {
+ "type": "string",
+ "description": "A generic name for the type of object that the DOI refers to. This is different from digitalObjectType that points to a specific type, e.g. there can be different types of digital specimens that each have a slightly different metadata schema because they describe a different kind of specimen, like a botanical versus a geological specimen.",
+ "example": "digital specimen"
+ },
+ "mediaHost": {
+ "type": "string",
+ "description": "ROR or, in absence of a ROR, Wikidata Qnumber for the administrative organisation responsible for hosting the digital media object. Note that this can be DiSSCo also. Note the organisation may use an external repository like morphobank to host the object.",
+ "example": "https://ror.org/0566bfb96"
+ },
+ "mediaHostName": {
+ "type": "string",
+ "description": "Name for the administrative organisation hosting the digital media (name derived from ROR or Wikidata at the point of creating the FDO record).",
+ "example": "Naturalis Biodiversity Center",
+ "$comment": "idx = 401"
+ },
+ "linkedDigitalObjectPid": {
+ "type": "string",
+ "description": "Handle or DOI, the DO to which the media should be linked.",
+ "example": "https://hdl.handle.net/20.5000.1025/3X0-WA3-J8Q"
+ },
+ "linkedDigitalObjectType": {
+ "type": "string",
+ "description": "The DO type to which the media is linked, one of: digital specimen, agent, facility, supplementary material"
+ },
+ "primaryMediaId": {
+ "type": "string",
+ "description": "Primary ID supplied by the original provider for the media (compatible with ac:providerManagedID). the mediaUrl may be the ID itself, for example: https://data.nhm.ac.uk/media/93012a86-a00f-435a-a985-8e3c0ab6e51b",
+ "example": "ae00-a4gg-123b4"
+ },
+ "primaryMediaIdType": {
+ "enum": [
+ "Global",
+ "Local",
+ "Resolvable"
+ ],
+ "description": "Vocabulary derived from DOI schema creationIdentifier.: PROPRIETARY IDENTIFIER if the identifier is custom made by the organisation or collection management system."
+ },
+ "primaryMediaIdName": {
+ "type": "string",
+ "example": "DAM nr"
+ },
+ "mediaType": {
+ "type": "string",
+ "description": "Type, describing the (primary) nature of the image. For example an image of a label will have primaryDcType text, an image of a specimen will have primaryDcType physical object. One of: text, image, sound, dataset, software, interactive, event, physical object + Audiovisual Core: 3D object type"
+ },
+ "mimeType": {
+ "type": "string",
+ "description": "Only mimetypes for audio, image, model, video, text should be provided. https://www.iana.org/assignments/media-types/media-types.xhtml"
+ },
+ "license": {
+ "type": "string",
+ "description": "Maps to dcterms:license, unenforced value that may or may not be machine actionable. http://purl.org/dc/terms/license.",
+ "example": "CC0 1.0 Universal (CC0 1.0) Public Domain Dedication",
+ "$comment": "idx = 409"
+ },
+ "licenseName": {
+ "type": "string",
+ "description": "Human-readable name of the license",
+ "example": "CC0 1.0 Universal (CC0 1.0) Public Domain Dedication",
+ "$comment": "idx = 409"
+ },
+ "licenseUrl": {
+ "type": "string",
+ "description": "Machine-actionable licensing information. Uses SPDX Identifiers.",
+ "example": "https://spdx.org/licenses/CC0-1.0",
+ "$comment": "idx = 410"
+ },
+ "rightsHolder": {
+ "type": "string",
+ "description": "If not present, defaults to mediaHost, https://purl.org/dc/terms/rightsHolder",
+ "example": "https://ror.org/0566bfb96"
+ },
+ "rightsHolderPid": {
+ "type": "string",
+ "description": "Resolvable identifier of the rights holder",
+ "example": "https://ror.org/0566bfb96"
+ }
+ },
+ "required": [
+ "referentName",
+ "mediaHost",
+ "mediaHostName",
+ "linkedDigitalObjectPid",
+ "linkedDigitalObjectType",
+ "primaryMediaId",
+ "license",
+ "rightsHolder"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/digital-media/1.0.0/schema/digital-media-request.json b/data-model/fdo-profile/digital-media/1.0.0/schema/digital-media-request.json
new file mode 100644
index 0000000..ba7e193
--- /dev/null
+++ b/data-model/fdo-profile/digital-media/1.0.0/schema/digital-media-request.json
@@ -0,0 +1,30 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/digital-media/0.1.0/digital-media-request.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "Schema for creating new PID records for digital media using the DiSSCO PID API. API maps requests to digital-media.json profile",
+ "$comment": "FDO Profile Version 0.1.0",
+ "properties": {
+ "data": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "const": "https://doi.org/21.T11148/bbad8c4e101e8af01115",
+ "description": "PID of the Digital Object Type"
+ },
+ "attributes": {
+ "type": "object",
+ "$ref": "https://schemas.dissco.tech/schemas/fdo-profile/digital-media/1.0.0/digital-media-request-attributes.json"
+ }
+ },
+ "required": [
+ "type",
+ "attributes"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "data"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/digital-media/1.0.0/schema/digital-media.json b/data-model/fdo-profile/digital-media/1.0.0/schema/digital-media.json
new file mode 100644
index 0000000..d4900de
--- /dev/null
+++ b/data-model/fdo-profile/digital-media/1.0.0/schema/digital-media.json
@@ -0,0 +1,262 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/digital-media/1.0.0/digital-media.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "FDO Profile for digital media object",
+ "$comment": "FDO Profile Version 1.0.0",
+ "properties": {
+ "fdoProfile": {
+ "const": "https://doi.org/21.T11148/bbad8c4e101e8af01115",
+ "description": "PID to a machine readable description of the attributes in the FDO record",
+ "$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": "Human readable version of the FDO Record license",
+ "$comment": "idx = 3"
+ },
+ "digitalObjectType": {
+ "const": "https://doi.org/21.T11148/bbad8c4e101e8af01115",
+ "description": "PID to a description of the Type of digital object that defines the metadata, bit sequences (if any) and operations for the object",
+ "$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": [
+ "DRAFT",
+ "ACTIVE",
+ "TOMBSTONE"
+ ],
+ "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"
+ },
+ "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": [
+ "ods:relatedTo",
+ "ods:isDuplicateOf"
+ ]
+ }
+ },
+ "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"
+ },
+ "10320/loc": {
+ "type": "string",
+ "description": "XML document describing location(s) of the resource",
+ "$comment": "idx = 101",
+ "example": ""
+ },
+ "issuedForAgent": {
+ "type": "string",
+ "description": "In the case of a digital specimen, this is a PID for DiSSCo as the agent responsible for serving the digital specimen object",
+ "example": "https://hdl.handle.net/10.22",
+ "$comment": "idx = 40"
+ },
+ "issuedForAgentName": {
+ "type": "string",
+ "description": "Human-readable agent name",
+ "example": "DiSSCo",
+ "$comment": "idx = 41"
+ },
+ "referentName": {
+ "type": "string",
+ "description": "In the case of a digital specimen this is the name for the object in the collection, which can be anything from a taxon name to a collection number. In the case of a media object, it is the media url without https://.",
+ "example": "Mus musculus type 1",
+ "$comment": "idx = 42"
+ },
+ "mediaHost": {
+ "type": "string",
+ "description": "ROR or, in absence of a ROR, Wikidata Qnumber for the administrative organisation responsible for hosting the digital media object. Note that this can be DiSSCo also. The organisation may use an external repository like morphobank to host the object.",
+ "example": "https://ror.org/0566bfb96",
+ "$comment": "idx = 400"
+ },
+ "mediaHostName": {
+ "type": "string",
+ "description": "Name for the administrative organisation hosting the digital media (name derived from ROR or Wikidata at the point of creating the FDO record).",
+ "example": "Naturalis Biodiversity Center",
+ "$comment": "idx = 401"
+ },
+ "linkedDigitalObjectPid": {
+ "type": "string",
+ "description": "Handle or DOI, the DO to which the media should be linked.",
+ "example": "https://hdl.handle.net/20.5000.1025/3X0-WA3-J8Q",
+ "$comment": "idx = 402"
+ },
+ "linkedDigitalObjectType": {
+ "type": "string",
+ "description": "FDO type type to which the media is linked.",
+ "$comment": "idx = 403"
+ },
+ "primaryMediaId": {
+ "type": "string",
+ "description": "Primary ID supplied by the original provider for the media (compatible with ac:providerManagedID). the mediaUrl may be the ID itself, for example: https://data.nhm.ac.uk/media/93012a86-a00f-435a-a985-8e3c0ab6e51b",
+ "example": "ae00-a4gg-123b4",
+ "$comment": "idx = 404"
+ },
+ "primaryMediaIdType": {
+ "enum": [
+ "Global",
+ "Local",
+ "Resolvable"
+ ],
+ "description": "Nature of institutional identifier. A globally unique identifier (e.g. a UUID) must be marked as \"Global\", while a resolvable identifier (e.g. a URL or a DOI including the proxy) must be marked at \"Resolvable\". If the identifier is unique only within the institution or collection system, it must be marked as \"Local\"",
+ "$comment": "idx = 405"
+ },
+ "primaryMediaIdName": {
+ "example": "ac:accessUr",
+ "$comment": "idx = 406"
+ },
+ "mediaType": {
+ "type": "string",
+ "description": "Describes the primary nature of the digital media",
+ "enum": [
+ "Collection",
+ "Dataset",
+ "Event",
+ "Image",
+ "InteractiveResource",
+ "MovingImage",
+ "PhysicalObject",
+ "Service",
+ "Software",
+ "Sound",
+ "Text"
+ ],
+ "$comment": "idx = 407"
+ },
+ "mimeType": {
+ "type": "string",
+ "description": "Only mimetypes for audio, image, model, video, text should be provided. https://www.iana.org/assignments/media-types/media-types.xhtml",
+ "example": "image/jpeg",
+ "$comment": "idx = 408"
+ },
+ "licenseName": {
+ "type": "string",
+ "description": "http://purl.org/dc/terms/license.",
+ "example": "CC0 1.0 Universal (CC0 1.0) Public Domain Dedication",
+ "$comment": "idx = 409"
+ },
+ "licenseUrl": {
+ "type": "string",
+ "description": "Machine-actionable licensing information. Uses SPDX Identifiers.",
+ "example": "https://spdx.org/licenses/CC0-1.0",
+ "$comment": "idx = 410"
+ },
+ "rightsHolder": {
+ "type": "string",
+ "description": "Usually the creator of the object, holds the copyright for the object. Defaults to the supplier of the media object. if no other rights holder is specified",
+ "example": "https://ror.org/0566bfb96",
+ "$comment": "idx = 411"
+ },
+ "rightsHolderPid": {
+ "type": "string",
+ "description": "Identifier of the rights holder",
+ "$comment": "idx = 412"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "fdoProfile",
+ "fdoRecordLicenseId",
+ "fdoRecordLicenseName",
+ "digitalObjectType",
+ "digitalObjectName",
+ "pid",
+ "pidIssuer",
+ "pidIssuerName",
+ "issuedForAgent",
+ "pidRecordIssueDate",
+ "pidRecordIssueNumber",
+ "pidStatus",
+ "10320/loc",
+ "referentName",
+ "mediaHost",
+ "mediaHostName",
+ "linkedDigitalObjectPid",
+ "linkedDigitalObjectType",
+ "primaryMediaId",
+ "licenseName",
+ "rightsHolder"
+ ]
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/digital-specimen/1.0.0/examples/example-digital-specimen-request.json b/data-model/fdo-profile/digital-specimen/1.0.0/examples/example-digital-specimen-request.json
new file mode 100644
index 0000000..63e124c
--- /dev/null
+++ b/data-model/fdo-profile/digital-specimen/1.0.0/examples/example-digital-specimen-request.json
@@ -0,0 +1,18 @@
+{
+ "data": {
+ "type": "https://doi.org/21.T11148/d8de0819e144e4096645",
+ "attributes": {
+ "referentName": "Mus musculus type 1",
+ "specimenHost": "https://ror.org/0566bfb96",
+ "normalisedPrimarySpecimenObjectId": "http://coldb.mnhn.fr/catalognumber/mnhn/ec/ec23797",
+ "livingOrPreserved": "Living",
+ "otherSpecimenIds": [
+ {
+ "identifierValue": "AVES.123",
+ "identifierType": "catalogId",
+ "resolvable": false
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/digital-specimen/1.0.0/examples/example-digital-specimen.json b/data-model/fdo-profile/digital-specimen/1.0.0/examples/example-digital-specimen.json
new file mode 100644
index 0000000..d93743a
--- /dev/null
+++ b/data-model/fdo-profile/digital-specimen/1.0.0/examples/example-digital-specimen.json
@@ -0,0 +1,28 @@
+{
+ "10320/loc": "",
+ "fdoProfile": "https://doi.org/21.T11148/d8de0819e144e4096645",
+ "fdoRecordLicenseId": "https://spdx.org/licenses/CC0-1.0.json",
+ "fdoRecordLicenseName": "CC0 1.0 Universal",
+ "digitalObjectType": "https://doi.org/21.T11148/d8de0819e144e4096645",
+ "digitalObjectName": "Digital Specimen",
+ "pid": "https://hdl.handle.net/TEST/FFR-RTL-B8K",
+ "pidIssuer": "https://ror.org/04wxnsj81",
+ "pidIssuerName": "DataCite",
+ "issuedForAgent": "https://ror.org/0566bfb96",
+ "issuedForAgentName": "Naturalis Biodiversity Center",
+ "pidRecordIssueDate": "2023-11-17T11:57:02.933Z",
+ "pidRecordIssueNumber": 1,
+ "pidStatus": "ACTIVE",
+ "referentName": "Some digital object",
+ "specimenHost": "https://ror.org/0566bfb96",
+ "specimenHostName": "Naturalis Biodiversity Center",
+ "normalisedPrimarySpecimenObjectId": "http://coldb.mnhn.fr/catalognumber/mnhn/ec/ec23797",
+ "livingOrPreserved": "Living",
+ "otherSpecimenIds": [
+ {
+ "identifierValue": "AVES.123",
+ "identifierType": "catalogId",
+ "resolvable": false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/digital-specimen/1.0.0/schema/digital-specimen-request-attributes.json b/data-model/fdo-profile/digital-specimen/1.0.0/schema/digital-specimen-request-attributes.json
new file mode 100644
index 0000000..a0fd7bd
--- /dev/null
+++ b/data-model/fdo-profile/digital-specimen/1.0.0/schema/digital-specimen-request-attributes.json
@@ -0,0 +1,183 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/digital-specimen/0.1.0/digital-specimen-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 a digital specimen",
+ "$comment": "FDO Profile Version 0.1.0",
+ "properties": {
+ "locations": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Additional URLs to be appended to the 10320/loc field"
+ },
+ "referentName": {
+ "type": "string",
+ "description": "In the case of a digital specimen this is the name for the object in the collection, which can be anything from a taxon name to a collection number."
+ },
+ "specimenHost": {
+ "type": "string",
+ "description": "ROR or, in absence of a ROR, Wikidata Qnumber for the administrative organisation hosting the specimen. Same as: Latimer Core identifierSource.",
+ "example": "https://ror.org/0566bfb96"
+ },
+ "specimenHostName": {
+ "type": "string",
+ "description": "Name for the administrative organisation as derived from ROR or Wikidata at the point of creating the FDO record.",
+ "example": "Naturalis Biodiversity Center"
+ },
+ "normalisedPrimarySpecimenObjectId": {
+ "type": "string",
+ "description": "For internal processing purposes only to make a local identifier globally unique. This is the primarySpecimenObjectId if it is globally unique or a combination of ROR ID string, source system ID string, primarySpecimenObjectId if it is a proprietary identifier.",
+ "example": "0566bfb96:20.5000.1025/GEE-W3J-HL2:RMNH.1.2b"
+ },
+ "otherSpecimenIds": {
+ "type": "array",
+ "$comment": "idx = 207",
+ "items": {
+ "type": "object",
+ "properties": {
+ "identifierValue": {
+ "type": "string"
+ },
+ "identifierType": {
+ "type": "string"
+ },
+ "resolvable": {
+ "type": "boolean",
+ "description": "whether or not the identifier is resolvable"
+ }
+ },
+ "required": [
+ "identifierValue",
+ "identifierType"
+ ]
+ }
+ },
+ "topicOrigin": {
+ "enum": [
+ "Natural",
+ "Human-made",
+ "Mixed origin",
+ "Unclassified"
+ ],
+ "description": "Highest-level terms identifying the fundamentals of the activities, in which context the objects in the collection were collected."
+ },
+ "topicDomain": {
+ "enum": [
+ "Life",
+ "Environment",
+ "Earth System",
+ "Extraterrestrial",
+ "Cultural Artefacts",
+ "Archive Material",
+ "Unclassified"
+ ],
+ "description": "High-level terms providing general domain information with which the objects are associated."
+ },
+ "topicDiscipline": {
+ "enum": [
+ "Anthropology",
+ "Botany",
+ "Astrogeology",
+ "Geology",
+ "Microbiology",
+ "Palaeontology",
+ "Zoology",
+ "Ecology",
+ "Other Biodiversity",
+ "Other Geodiversity",
+ "Unclassified"
+ ],
+ "description": "Overarching classification of the scientific discipline to which the objects within the collection belong or are related."
+ },
+ "topicCategory": {
+ "enum": [
+ "Human remains",
+ "Hominid remains",
+ "Mycology",
+ "Algae",
+ "Bryophytes",
+ "Pteridophytes",
+ "Seed plants",
+ "Other Botany Objects",
+ "Insects",
+ "Arachnids",
+ "Crustaceans & Myriapods",
+ "Porifera",
+ "Mollusca",
+ "Cnidaria",
+ "Echinodermata",
+ "Fishes",
+ "Amphibians",
+ "Reptiles",
+ "Birds",
+ "Mammals",
+ "AnimalGeneticResources",
+ "Other Zoology Objects",
+ "Phages",
+ "Bacteria & Archaea",
+ "Plasmids",
+ "Protozoa",
+ "Eukaryotic microorganisms",
+ "Viruses",
+ "Microfungi",
+ "Other Microbiology Objects",
+ "Botany Fossils",
+ "Invertebrate Fossils",
+ "Vertebrate Fossils",
+ "Other Palaeontology Objects",
+ "Minerals and Gems",
+ "Loose Sediment Sample",
+ "Mixed Solid Mater Sample",
+ "Water-Ice Sample",
+ "Liquid or Gaseous Matter Sample",
+ "Mixed Geology Objects",
+ "Terrestrial Finds/Falls",
+ "Terrestrial Impacta",
+ "Sample Returns",
+ "Unclassified"
+ ],
+ "description": "Countable things (objects) served as a more detailed classification of each of the disciplines."
+ },
+ "livingOrPreserved": {
+ "enum": [
+ "Living",
+ "Preserved"
+ ],
+ "description": "State of specimen"
+ },
+ "materialSampleType": {
+ "enum": [
+ "Whole organism specimen",
+ "Organism part",
+ "Organism product",
+ "Biome aggregation",
+ "Bundle biome aggregation",
+ "Fossil",
+ "Any biological specimen",
+ "Aggregation",
+ "Slurry biome aggregation",
+ "Other solid object",
+ "Fluid in container",
+ "Anthropogenic aggregation",
+ "Artefact",
+ "Any aggregation specimen"
+ ],
+ "description": "https://isamplesorg.github.io/models/generated/vocabularies/specimenType.html"
+ },
+ "markedAsType": {
+ "type": "boolean",
+ "description": "TRUE if the specimen is marked as type with a stamp or label."
+ },
+ "catalogIdentifier": {
+ "type": "string",
+ "description": "Identifier of source system catalog"
+ }
+ },
+ "required": [
+ "issuedForAgent",
+ "specimenHost",
+ "normalisedPrimarySpecimenObjectId"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/digital-specimen/1.0.0/schema/digital-specimen-request.json b/data-model/fdo-profile/digital-specimen/1.0.0/schema/digital-specimen-request.json
new file mode 100644
index 0000000..265ba74
--- /dev/null
+++ b/data-model/fdo-profile/digital-specimen/1.0.0/schema/digital-specimen-request.json
@@ -0,0 +1,30 @@
+{
+ "$id": "ttps://schemas.dissco.tech/schemas/fdo-profile/digital-specimen/1.0.0/digital-specimen-request.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "FDO Profile for Digital Specimens",
+ "$comment": "FDO Profile Version 1.0.0",
+ "properties": {
+ "data": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "const": "https://doi.org/21.T11148/d8de0819e144e4096645",
+ "description": "PID of the Digital Object Type"
+ },
+ "attributes": {
+ "type": "object",
+ "$ref": "https://schemas.dissco.tech/schemas/fdo-profile/digital-specimen/1.0.0/digital-specimen-request-attributes.json"
+ }
+ },
+ "required": [
+ "type",
+ "attributes"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "data"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/digital-specimen/1.0.0/schema/digital-specimen.json b/data-model/fdo-profile/digital-specimen/1.0.0/schema/digital-specimen.json
new file mode 100644
index 0000000..efbcef0
--- /dev/null
+++ b/data-model/fdo-profile/digital-specimen/1.0.0/schema/digital-specimen.json
@@ -0,0 +1,336 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/digital-specimen/1.0.0/digital-specimen.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "Kernel from which all DiSSCo DOI FDO profiles are derived",
+ "$comment": "FDO Profile Version 1.0.0",
+ "properties": {
+ "fdoProfile": {
+ "const": "https://doi.org/21.T11148/d8de0819e144e4096645",
+ "description": "PID to a machine readable description of the attributes in the FDO record",
+ "$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": "Human readable version of the FDO Record license",
+ "$comment": "idx = 3"
+ },
+ "digitalObjectType": {
+ "const": "https://doi.org/21.T11148/d8de0819e144e4096645",
+ "description": "PID to a description of the Type of digital object that defines the metadata, bit sequences (if any) and operations for the object",
+ "$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": [
+ "DRAFT",
+ "ACTIVE",
+ "TOMBSTONE"
+ ],
+ "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"
+ },
+ "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": [
+ "ods:relatedTo",
+ "ods:isDuplicateOf"
+ ]
+ }
+ },
+ "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"
+ },
+ "10320/loc": {
+ "type": "string",
+ "description": "XML document describing location(s) of the resource",
+ "$comment": "idx = 101",
+ "example": ""
+ },
+ "issuedForAgent": {
+ "type": "string",
+ "description": "In the case of a digital specimen, this is a PID for DiSSCo as the agent responsible for serving the digital specimen object",
+ "example": "https://hdl.handle.net/10.22",
+ "$comment": "idx = 40"
+ },
+ "issuedForAgentName": {
+ "type": "string",
+ "description": "Human-readable agent name",
+ "example": "DiSSCo",
+ "$comment": "idx = 41"
+ },
+ "referentName": {
+ "type": "string",
+ "description": "In the case of a digital specimen this is the name for the object in the collection, which can be anything from a taxon name to a collection number. In the case of a media object, it is the media url without https://.",
+ "example": "Mus musculus type 1",
+ "$comment": "idx = 42"
+ },
+ "specimenHost": {
+ "type": "string",
+ "description": "ROR or, in absence of a ROR, Wikidata Qnumber for the administrative organisation hosting the specimen. Same as: Latimer Core identifierSource.",
+ "example": "https://ror.org/0566bfb96",
+ "$comment": "idx = 200"
+ },
+ "specimenHostName": {
+ "type": "string",
+ "description": "Name for the administrative organisation as derived from ROR or Wikidata at the point of creating the FDO record.",
+ "example": "Naturalis Biodiversity Center",
+ "$comment": "idx = 201"
+ },
+ "normalisedPrimarySpecimenObjectId": {
+ "type": "string",
+ "description": "For internal processing purposes only to make a local identifier globally unique. This is the primarySpecimenObjectId if it is globally unique or a combination of ROR ID string, source system ID string, primarySpecimenObjectId if it is a proprietary identifier.",
+ "example": "0566bfb96:20.5000.1025/GEE-W3J-HL2:RMNH.1.2b",
+ "$comment": "idx = 203"
+ },
+ "otherSpecimenIds": {
+ "type": "array",
+ "$comment": "idx = 207",
+ "items": {
+ "type": "object",
+ "properties": {
+ "identifierValue": {
+ "type": "string"
+ },
+ "identifierType": {
+ "type": "string"
+ },
+ "resolvable": {
+ "type": "boolean",
+ "description": "whether or not the identifier is resolvable"
+ }
+ },
+ "required": [
+ "identifierValue",
+ "identifierType"
+ ],
+ "additionalProperties": false
+ },
+ "$comment": "idx = 204"
+ },
+ "topicOrigin": {
+ "enum": [
+ "Natural",
+ "Human-made",
+ "Mixed origin",
+ "Unclassified"
+ ],
+ "description": "Highest-level terms identifying the fundamentals of the activities, in which context the objects in the collection were collected.",
+ "$comment": "idx = 205"
+ },
+ "topicDomain": {
+ "enum": [
+ "Life",
+ "Environment",
+ "Earth System",
+ "Extraterrestrial",
+ "Cultural Artefacts",
+ "Archive Material",
+ "Unclassified"
+ ],
+ "description": "High-level terms providing general domain information with which the objects are associated.",
+ "$comment": "idx = 206"
+ },
+ "topicDiscipline": {
+ "enum": [
+ "Anthropology",
+ "Botany",
+ "Astrogeology",
+ "Geology",
+ "Microbiology",
+ "Palaeontology",
+ "Zoology",
+ "Ecology",
+ "Other Biodiversity",
+ "Other Geodiversity",
+ "Unclassified"
+ ],
+ "description": "Overarching classification of the scientific discipline to which the objects within the collection belong or are related.",
+ "$comment": "idx = 207"
+ },
+ "topicCategory": {
+ "enum": [
+ "Human remains",
+ "Hominid remains",
+ "Macrofungi, Lichens & Myxomycetes",
+ "Algae",
+ "Bryophytes",
+ "Pteridophytes",
+ "Seed plants",
+ "Other Botany Objects",
+ "Insects",
+ "Arachnids",
+ "Crustaceans & Myriapods",
+ "Porifera",
+ "Mollusca",
+ "Cnidaria",
+ "Echinodermata",
+ "Fishes",
+ "Amphibians",
+ "Reptiles",
+ "Birds",
+ "Mammals",
+ "AnimalGeneticResources",
+ "Other Zoology Objects",
+ "Phages",
+ "Bacteria & Archaea",
+ "Plasmids",
+ "Protozoa",
+ "Eukaryotic microorganisms",
+ "Viruses",
+ "Microfungi",
+ "Other Microbiology Objects",
+ "Botany Fossils",
+ "Invertebrate Fossils",
+ "Vertebrate Fossils",
+ "Other Palaeontology Objects",
+ "Minerals and Gems",
+ "Loose Sediment Sample",
+ "Mixed Solid Matter Sample",
+ "Water-Ice Sample",
+ "Liquid or Gaseous Matter Sample",
+ "Mixed Geology Objects",
+ "Terrestrial Finds/Falls",
+ "Terrestrial Impacta",
+ "Sample Returns",
+ "Sedimentary Rock",
+ "Metamorphic or Igneous Rock",
+ "Plant Genetic Resource",
+ "Floral and Faunal remains",
+ "Other Anthropology Objects",
+ "Unclassified"
+ ],
+ "description": "Countable things (objects) served as a more detailed classification of each of the disciplines.",
+ "$comment": "idx = 208"
+ },
+ "livingOrPreserved": {
+ "enum": [
+ "Living",
+ "Preserved"
+ ],
+ "description": "State of specimen",
+ "$comment": "idx = 209"
+ },
+ "materialSampleType": {
+ "enum": [
+ "Any biological specimen",
+ "Biological material sample",
+ "Fluid in container",
+ "Fluid in container",
+ "Non biologic solid object",
+ "Research product"
+ ],
+ "description": "https://isamplesorg.github.io/models/generated/vocabularies/specimenType.html",
+ "$comment": "idx = 211"
+ },
+ "markedAsType": {
+ "type": "boolean",
+ "description": "TRUE if the specimen is marked as type with a stamp or label.\n",
+ "$comment": "idx = 212"
+ },
+ "catalogNumber": {
+ "type": "string",
+ "description": "Identifier of source system catalog",
+ "$comment": "idx = 213"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "fdoProfile",
+ "fdoRecordLicenseId",
+ "digitalObjectType",
+ "digitalObjectName",
+ "pid",
+ "pidIssuer",
+ "pidIssuerName",
+ "issuedForAgent",
+ "pidRecordIssueDate",
+ "pidRecordIssueNumber",
+ "pidStatus",
+ "10320/loc",
+ "referentName",
+ "specimenHost",
+ "specimenHostName",
+ "normalisedPrimarySpecimenObjectId"
+ ]
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/doi-kernel/1.0.0/examples/example-doi-kernel.json b/data-model/fdo-profile/doi-kernel/1.0.0/examples/example-doi-kernel.json
new file mode 100644
index 0000000..201f09d
--- /dev/null
+++ b/data-model/fdo-profile/doi-kernel/1.0.0/examples/example-doi-kernel.json
@@ -0,0 +1,17 @@
+{
+ "10320/loc": "",
+ "fdoProfile": "https://doi.org/21.T11148/527856fd709ec8c5bc8c",
+ "fdoRecordLicense": "https://spdx.org/licenses/CC0-1.0.json",
+ "fdoRecordLicenseName": "CC0 1.0 Universal",
+ "digitalObjectType": "https://doi.org/21.T11148/527856fd709ec8c5bc8c",
+ "digitalObjectName": "DOI Kernel",
+ "pid": "https://hdl.handle.net/TEST/FFR-RTL-B8K",
+ "pidIssuer": "https://ror.org/04wxnsj81",
+ "pidIssuerName": "DataCite",
+ "issuedForAgent": "https://ror.org/0566bfb96",
+ "issuedForAgentName": "Naturalis Biodiversity Center",
+ "pidRecordIssueDate": "2023-11-17T11:57:02.933Z",
+ "pidRecordIssueNumber": 1,
+ "pidStatus": "ACTIVE",
+ "referentName": "Some digital object"
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/doi-kernel/1.0.0/examples/example-doi-request.json b/data-model/fdo-profile/doi-kernel/1.0.0/examples/example-doi-request.json
new file mode 100644
index 0000000..998f4c7
--- /dev/null
+++ b/data-model/fdo-profile/doi-kernel/1.0.0/examples/example-doi-request.json
@@ -0,0 +1,8 @@
+{
+ "data": {
+ "type": "https://doi.org/21.T11148/527856fd709ec8c5bc8c",
+ "attributes": {
+ "referentName": "Mus musculus type 1"
+ }
+ }
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/doi-kernel/1.0.0/schema/doi-kernel-request-attributes.json b/data-model/fdo-profile/doi-kernel/1.0.0/schema/doi-kernel-request-attributes.json
new file mode 100644
index 0000000..7f96e37
--- /dev/null
+++ b/data-model/fdo-profile/doi-kernel/1.0.0/schema/doi-kernel-request-attributes.json
@@ -0,0 +1,21 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/doi-kernel/1.0.0/doi-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 a generic DOI",
+ "$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"
+ },
+ "referentName": {
+ "type": "string",
+ "description": "In the case of a digital specimen this is the name for the object in the collection, which can be anything from a taxon name to a collection number.",
+ "example": "Mus musculus type 1"
+ }
+ },
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/doi-kernel/1.0.0/schema/doi-kernel.json b/data-model/fdo-profile/doi-kernel/1.0.0/schema/doi-kernel.json
new file mode 100644
index 0000000..08b0dca
--- /dev/null
+++ b/data-model/fdo-profile/doi-kernel/1.0.0/schema/doi-kernel.json
@@ -0,0 +1,166 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/doi-kernel/1.0.0/doi-kernel.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "Kernel from which all DiSSCo DOI FDO profiles are derived",
+ "$comment": "FDO Profile Version 1.0.0",
+ "properties": {
+ "fdoProfile": {
+ "const": "https://doi.org/21.T11148/527856fd709ec8c5bc8c",
+ "description": "PID to a machine readable description of the attributes in the FDO record",
+ "$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": "Human readable version of the FDO Record license",
+ "$comment": "idx = 3"
+ },
+ "digitalObjectType": {
+ "const": "https://doi.org/21.T11148/527856fd709ec8c5bc8c",
+ "description": "PID to a description of the Type of digital object that defines the metadata, bit sequences (if any) and operations for the object",
+ "$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": [
+ "DRAFT",
+ "ACTIVE",
+ "TOMBSTONE"
+ ],
+ "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"
+ },
+ "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": [
+ "ods:relatedTo",
+ "ods:isDuplicateOf"
+ ]
+ }
+ },
+ "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"
+ },
+ "10320/loc": {
+ "type": "string",
+ "description": "XML document describing location(s) of the resource",
+ "$comment": "idx = 101",
+ "example": ""
+ },
+ "issuedForAgent": {
+ "type": "string",
+ "description": "In the case of a digital specimen, this is a PID for DiSSCo as the agent responsible for serving the digital specimen object",
+ "example": "https://hdl.handle.net/10.22",
+ "$comment": "idx = 40"
+ },
+ "issuedForAgentName": {
+ "type": "string",
+ "description": "Human-readable agent name",
+ "example": "DiSSCo",
+ "$comment": "idx = 41"
+ },
+ "referentName": {
+ "type": "string",
+ "description": "In the case of a digital specimen this is the name for the object in the collection, which can be anything from a taxon name to a collection number. In the case of a media object, it is the media url without https://.",
+ "example": "Mus musculus type 1",
+ "$comment": "idx = 42"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "fdoProfile",
+ "fdoRecordLicenseId",
+ "fdoRecordLicenseName",
+ "digitalObjectType",
+ "digitalObjectName",
+ "pid",
+ "pidIssuer",
+ "pidIssuerName",
+ "issuedForAgent",
+ "pidRecordIssueDate",
+ "pidRecordIssueNumber",
+ "pidStatus",
+ "10320/loc",
+ "referentName"
+ ]
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/doi-kernel/1.0.0/schema/doi-request.json b/data-model/fdo-profile/doi-kernel/1.0.0/schema/doi-request.json
new file mode 100644
index 0000000..bed5845
--- /dev/null
+++ b/data-model/fdo-profile/doi-kernel/1.0.0/schema/doi-request.json
@@ -0,0 +1,30 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/doi-kernel/1.0.0/doi-request.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "description": "Kernel from which all DiSSCo DOI FDO profiles are derived",
+ "$comment": "FDO Profile Version 1.0.0",
+ "properties": {
+ "data": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "const": "https://doi.org/21.T11148/527856fd709ec8c5bc8c",
+ "description": "PID of the Digital Object Type"
+ },
+ "attributes": {
+ "type": "object",
+ "$ref": "https://schemas.dissco.tech/schemas/fdo-profile/doi-kernel/1.0.0/doi-request-attributes.json"
+ }
+ },
+ "required": [
+ "type",
+ "attributes"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "data"
+ ],
+ "additionalProperties": false
+}
diff --git a/data-model/fdo-profile/handle-kernel/1.0.0/examples/example-handle-request.json b/data-model/fdo-profile/handle-kernel/1.0.0/examples/example-handle-request.json
new file mode 100644
index 0000000..0a560f7
--- /dev/null
+++ b/data-model/fdo-profile/handle-kernel/1.0.0/examples/example-handle-request.json
@@ -0,0 +1,10 @@
+{
+ "data": {
+ "type": "https:/doi.org/21.T11148/532ce6796e2828dd2be6",
+ "attributes": {
+ "locations": [
+ "https://coldb.mnhn.fr/catalognumber/mnhn/ec/ec23946"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/handle-kernel/1.0.0/examples/example-handle.json b/data-model/fdo-profile/handle-kernel/1.0.0/examples/example-handle.json
new file mode 100644
index 0000000..da78093
--- /dev/null
+++ b/data-model/fdo-profile/handle-kernel/1.0.0/examples/example-handle.json
@@ -0,0 +1,14 @@
+{
+ "10320/loc": "",
+ "fdoProfile": "https://doi.org/21.T11148/532ce6796e2828dd2be6",
+ "fdoRecordLicenseId": "https://spdx.org/licenses/CC0-1.0.json",
+ "fdoRecordLicenseName": "CC0 1.0 Universal",
+ "digitalObjectType": "https://doi.org/21.T11148/532ce6796e2828dd2be6",
+ "digitalObjectName": "Handle Kernel",
+ "pid": "https://hdl.handle.net/TEST/FFR-RTL-B8K",
+ "pidIssuer": "https://ror.org/04wxnsj81",
+ "pidIssuerName": "DataCite",
+ "pidRecordIssueDate": "2023-11-17T11:57:02.933Z",
+ "pidRecordIssueNumber": 1,
+ "pidStatus": "ACTIVE"
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/handle-kernel/1.0.0/examples/example-tombstoned-handle.json b/data-model/fdo-profile/handle-kernel/1.0.0/examples/example-tombstoned-handle.json
new file mode 100644
index 0000000..2be5433
--- /dev/null
+++ b/data-model/fdo-profile/handle-kernel/1.0.0/examples/example-tombstoned-handle.json
@@ -0,0 +1,22 @@
+{
+ "10320/loc": "",
+ "fdoProfile": "https://doi.org/21.T11148/532ce6796e2828dd2be6",
+ "fdoRecordLicenseId": "https://spdx.org/licenses/CC0-1.0.json",
+ "fdoRecordLicenseName": "CC0 1.0 Universal",
+ "digitalObjectType": "https://doi.org/21.T11148/532ce6796e2828dd2be6",
+ "digitalObjectName": "Handle Kernel",
+ "pid": "https://hdl.handle.net/TEST/FFR-RTL-B8K",
+ "pidIssuer": "https://ror.org/04wxnsj81",
+ "pidIssuerName": "DataCite",
+ "pidRecordIssueDate": "2023-11-17T11:57:02.933Z",
+ "pidRecordIssueNumber": 1,
+ "pidStatus": "TOMBSTONE",
+ "tombstoneText": "Resource deleted by admin",
+ "hasRelatedPid": [
+ {
+ "pid": "https://doi.org/10.21/XU9-54T-22A",
+ "relationshipType": "superseded By"
+ }
+ ],
+ "tombstoneDate": "2024-11-17T11:57:02.933Z"
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/handle-kernel/1.0.0/schema/handle-kernel.json b/data-model/fdo-profile/handle-kernel/1.0.0/schema/handle-kernel.json
new file mode 100644
index 0000000..c0d8cb9
--- /dev/null
+++ b/data-model/fdo-profile/handle-kernel/1.0.0/schema/handle-kernel.json
@@ -0,0 +1,147 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/handle-kernel/1.0.0/handle-kernel-fdo-profile.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "description": "Kernel from which all DiSSCo FAIR Digital Object profiles are derived",
+ "$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/532ce6796e2828dd2be6",
+ "$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/532ce6796e2828dd2be6",
+ "$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": ""
+ },
+ "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"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "fdoProfile",
+ "fdoRecordLicenseId",
+ "fdoRecordLicenseName",
+ "digitalObjectType",
+ "digitalObjectName",
+ "pid",
+ "pidIssuer",
+ "pidIssuerName",
+ "pidRecordIssueDate",
+ "pidRecordIssueNumber",
+ "10320/loc",
+ "pidStatus"
+ ]
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/handle-kernel/1.0.0/schema/handle-request-attributes.json b/data-model/fdo-profile/handle-kernel/1.0.0/schema/handle-request-attributes.json
new file mode 100644
index 0000000..31854d9
--- /dev/null
+++ b/data-model/fdo-profile/handle-kernel/1.0.0/schema/handle-request-attributes.json
@@ -0,0 +1,16 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/machine-annotation-service/1.0.0/machine-annotation-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 a MAS",
+ "$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"
+ }
+ },
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/handle-kernel/1.0.0/schema/handle-request.json b/data-model/fdo-profile/handle-kernel/1.0.0/schema/handle-request.json
new file mode 100644
index 0000000..84e192f
--- /dev/null
+++ b/data-model/fdo-profile/handle-kernel/1.0.0/schema/handle-request.json
@@ -0,0 +1,31 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/handle-kernel/1.0.0/handle-request.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "description": "Schema for making handle-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/532ce6796e2828dd2be6",
+ "description": "PID of the Digital Object Type"
+ },
+ "attributes": {
+ "type": "object",
+ "$ref": "https://schemas.dissco.tech/schemas/fdo-profile/handle-kernel/0.1.0/handle-request-attributes.json"
+ }
+ },
+ "required": [
+ "type",
+ "attributes"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "data"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/mas/0.1.0/examples/example-mas-request.json b/data-model/fdo-profile/machine-annotation-service/0.1.0/examples/example-mas-request.json
similarity index 100%
rename from data-model/fdo-profile/mas/0.1.0/examples/example-mas-request.json
rename to data-model/fdo-profile/machine-annotation-service/0.1.0/examples/example-mas-request.json
diff --git a/data-model/fdo-profile/mas/0.1.0/examples/example-mas.json b/data-model/fdo-profile/machine-annotation-service/0.1.0/examples/example-mas.json
similarity index 100%
rename from data-model/fdo-profile/mas/0.1.0/examples/example-mas.json
rename to data-model/fdo-profile/machine-annotation-service/0.1.0/examples/example-mas.json
diff --git a/data-model/fdo-profile/mas/0.1.0/examples/example-tombstoned-mas.json b/data-model/fdo-profile/machine-annotation-service/0.1.0/examples/example-tombstoned-mas.json
similarity index 100%
rename from data-model/fdo-profile/mas/0.1.0/examples/example-tombstoned-mas.json
rename to data-model/fdo-profile/machine-annotation-service/0.1.0/examples/example-tombstoned-mas.json
diff --git a/data-model/fdo-profile/mas/0.1.0/schema/mas-request-attributes.json b/data-model/fdo-profile/machine-annotation-service/0.1.0/schema/mas-request-attributes.json
similarity index 92%
rename from data-model/fdo-profile/mas/0.1.0/schema/mas-request-attributes.json
rename to data-model/fdo-profile/machine-annotation-service/0.1.0/schema/mas-request-attributes.json
index e906f2d..86bb547 100644
--- a/data-model/fdo-profile/mas/0.1.0/schema/mas-request-attributes.json
+++ b/data-model/fdo-profile/machine-annotation-service/0.1.0/schema/mas-request-attributes.json
@@ -1,5 +1,5 @@
{
- "$id": "https://schemas.dissco.tech/schemas/fdo-profile/mas/0.1.0/mas-request-attributes.json",
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/machine-annotation-service/0.1.0/mas-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 a MAS",
"$comment": "FDO Profile Version 0.1.0",
diff --git a/data-model/fdo-profile/mas/0.1.0/schema/mas-request.json b/data-model/fdo-profile/machine-annotation-service/0.1.0/schema/mas-request.json
similarity index 87%
rename from data-model/fdo-profile/mas/0.1.0/schema/mas-request.json
rename to data-model/fdo-profile/machine-annotation-service/0.1.0/schema/mas-request.json
index b78e836..2097e32 100644
--- a/data-model/fdo-profile/mas/0.1.0/schema/mas-request.json
+++ b/data-model/fdo-profile/machine-annotation-service/0.1.0/schema/mas-request.json
@@ -1,5 +1,5 @@
{
- "$id": "https://schemas.dissco.tech/schemas/fdo-profile/mas/0.1.0/mas-request.json",
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/machine-annotation-service/0.1.0/mas-request.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "FDO Profile requests to PID API for Machine Annotation Services",
"$comment": "FDO Profile Version 0.1.0",
diff --git a/data-model/fdo-profile/mas/0.1.0/schema/mas.json b/data-model/fdo-profile/machine-annotation-service/0.1.0/schema/mas.json
similarity index 98%
rename from data-model/fdo-profile/mas/0.1.0/schema/mas.json
rename to data-model/fdo-profile/machine-annotation-service/0.1.0/schema/mas.json
index 1126348..f1c0d13 100644
--- a/data-model/fdo-profile/mas/0.1.0/schema/mas.json
+++ b/data-model/fdo-profile/machine-annotation-service/0.1.0/schema/mas.json
@@ -1,5 +1,5 @@
{
- "$id": "https://schemas.dissco.tech/schemas/fdo-profile/mas/0.1.0/mas.json",
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/machine-annotation-service/0.1.0/mas.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"description": "FDO Profile for Machine Annotation Services",
"$comment": "FDO Profile Version 0.1.0",
diff --git a/data-model/fdo-profile/machine-annotation-service/1.0.0/examples/example-machine-annotation-service-request.json b/data-model/fdo-profile/machine-annotation-service/1.0.0/examples/example-machine-annotation-service-request.json
new file mode 100644
index 0000000..044f21a
--- /dev/null
+++ b/data-model/fdo-profile/machine-annotation-service/1.0.0/examples/example-machine-annotation-service-request.json
@@ -0,0 +1,11 @@
+{
+ "data": {
+ "type": "https://doi.org/21.T11148/22e71a0015cbcfba8ffa",
+ "attributes": {
+ "locations": [
+ "https://coldb.mnhn.fr/catalognumber/mnhn/ec/ec23946"
+ ],
+ "machineAnnotationServiceName": "GBIF Entity Linker"
+ }
+ }
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/machine-annotation-service/1.0.0/examples/example-machine-annotation-service.json b/data-model/fdo-profile/machine-annotation-service/1.0.0/examples/example-machine-annotation-service.json
new file mode 100644
index 0000000..e975aaa
--- /dev/null
+++ b/data-model/fdo-profile/machine-annotation-service/1.0.0/examples/example-machine-annotation-service.json
@@ -0,0 +1,15 @@
+{
+ "10320/loc": "",
+ "fdoProfile": "https://doi.org/21.T11148/22e71a0015cbcfba8ffa",
+ "fdoRecordLicenseId": "https://spdx.org/licenses/CC0-1.0.json",
+ "fdoRecordLicenseName": "CC0 1.0 Universal",
+ "digitalObjectType": "https://doi.org/21.T11148/22e71a0015cbcfba8ffa",
+ "digitalObjectName": "Machine Annotation Service",
+ "pid": "https://hdl.handle.net/TEST/FFR-RTL-B8K",
+ "pidIssuer": "https://ror.org/04wxnsj81",
+ "pidIssuerName": "DataCite",
+ "pidRecordIssueDate": "2023-11-17T11:57:02.933Z",
+ "pidRecordIssueNumber": 1,
+ "pidStatus": "ACTIVE",
+ "machineAnnotationServiceName": "GBIF Entity Linker"
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/machine-annotation-service/1.0.0/schema/machine-annotation-service-request-attributes.json b/data-model/fdo-profile/machine-annotation-service/1.0.0/schema/machine-annotation-service-request-attributes.json
new file mode 100644
index 0000000..2c8cbcd
--- /dev/null
+++ b/data-model/fdo-profile/machine-annotation-service/1.0.0/schema/machine-annotation-service-request-attributes.json
@@ -0,0 +1,23 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/handle-kernel/1.0.0/handle-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 a generic Handle",
+ "$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"
+ },
+ "machineAnnotationServiceName": {
+ "type": "string",
+ "description" : "Name of MAS"
+ }
+ },
+ "required": [
+ "machineAnnotationServiceName"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/machine-annotation-service/1.0.0/schema/machine-annotation-service-request.json b/data-model/fdo-profile/machine-annotation-service/1.0.0/schema/machine-annotation-service-request.json
new file mode 100644
index 0000000..59380fd
--- /dev/null
+++ b/data-model/fdo-profile/machine-annotation-service/1.0.0/schema/machine-annotation-service-request.json
@@ -0,0 +1,31 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/machine-annotation-service/1.0.0/machine-annotation-service-request.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "description": "Schema for making machine annotation service 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/22e71a0015cbcfba8ffa",
+ "description": "PID of the Digital Object Type"
+ },
+ "attributes": {
+ "type": "object",
+ "$ref": "https://schemas.dissco.tech/schemas/fdo-profile/machine-annotation-service/1.0.0/machine-annotation-service-attributes.json"
+ }
+ },
+ "required": [
+ "type",
+ "attributes"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "data"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/machine-annotation-service/1.0.0/schema/machine-annotation-service.json b/data-model/fdo-profile/machine-annotation-service/1.0.0/schema/machine-annotation-service.json
new file mode 100644
index 0000000..197e252
--- /dev/null
+++ b/data-model/fdo-profile/machine-annotation-service/1.0.0/schema/machine-annotation-service.json
@@ -0,0 +1,153 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/machine-annotation-service/1.0.0/machine-annotation-service-fdo-profile.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "description": "FDO Profile for Machine Annotation Service",
+ "$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/22e71a0015cbcfba8ffa",
+ "$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/22e71a0015cbcfba8ffa",
+ "$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": ""
+ },
+ "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"
+ },
+ "machineAnnotationServiceName": {
+ "type": "string",
+ "description": "Name of Machine Annotation Service",
+ "$comment": "idx = 604"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "fdoProfile",
+ "fdoRecordLicenseId",
+ "fdoRecordLicenseName",
+ "digitalObjectType",
+ "digitalObjectName",
+ "pid",
+ "pidIssuer",
+ "pidIssuerName",
+ "pidRecordIssueDate",
+ "pidRecordIssueNumber",
+ "10320/loc",
+ "pidStatus",
+ "machineAnnotationServiceName"
+ ]
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/source-system/1.0.0/examples/example-source-system-fdo-profile.json b/data-model/fdo-profile/source-system/1.0.0/examples/example-source-system-fdo-profile.json
new file mode 100644
index 0000000..877e6f1
--- /dev/null
+++ b/data-model/fdo-profile/source-system/1.0.0/examples/example-source-system-fdo-profile.json
@@ -0,0 +1,15 @@
+{
+ "10320/loc": "",
+ "fdoProfile": "https://doi.org/21.T11148/417a4f472f60f7974c12",
+ "fdoRecordLicenseId": "https://spdx.org/licenses/CC0-1.0.json",
+ "fdoRecordLicenseName": "CC0 1.0 Universal",
+ "digitalObjectType": "https://doi.org/21.T11148/417a4f472f60f7974c12",
+ "digitalObjectName": "Source System",
+ "pid": "https://hdl.handle.net/TEST/FFR-RTL-B8K",
+ "pidIssuer": "https://ror.org/04wxnsj81",
+ "pidIssuerName": "DataCite",
+ "pidRecordIssueDate": "2023-11-17T11:57:02.933Z",
+ "pidRecordIssueNumber": 1,
+ "pidStatus": "ACTIVE",
+ "sourceSystemName": "Botanical Collection of NHM"
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/source-system/1.0.0/examples/example-source-system-request.json b/data-model/fdo-profile/source-system/1.0.0/examples/example-source-system-request.json
new file mode 100644
index 0000000..8704617
--- /dev/null
+++ b/data-model/fdo-profile/source-system/1.0.0/examples/example-source-system-request.json
@@ -0,0 +1,11 @@
+{
+ "data": {
+ "type": "https://doi.org/21.T11148/417a4f472f60f7974c12",
+ "attributes": {
+ "locations": [
+ "https://coldb.mnhn.fr/catalognumber/mnhn/ec/ec23946"
+ ],
+ "sourceSystemName": "Botanical Collection of NHM"
+ }
+ }
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/source-system/1.0.0/schema/source-system-fdo-profile.json b/data-model/fdo-profile/source-system/1.0.0/schema/source-system-fdo-profile.json
new file mode 100644
index 0000000..caeb8b2
--- /dev/null
+++ b/data-model/fdo-profile/source-system/1.0.0/schema/source-system-fdo-profile.json
@@ -0,0 +1,153 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/source-system/1.0.0/source-system-fdo-profile.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "description": "FDO Profile for source system",
+ "$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/417a4f472f60f7974c12",
+ "$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/417a4f472f60f7974c12",
+ "$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": ""
+ },
+ "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"
+ },
+ "sourceSystemName": {
+ "type": "string",
+ "description": "Name of the source system",
+ "$comment": "idx=600"
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "fdoProfile",
+ "fdoRecordLicenseId",
+ "fdoRecordLicenseName",
+ "digitalObjectType",
+ "digitalObjectName",
+ "pid",
+ "pidIssuer",
+ "pidIssuerName",
+ "pidRecordIssueDate",
+ "pidRecordIssueNumber",
+ "10320/loc",
+ "pidStatus",
+ "sourceSystemName"
+ ]
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/source-system/1.0.0/schema/source-system-request-attributes.json b/data-model/fdo-profile/source-system/1.0.0/schema/source-system-request-attributes.json
new file mode 100644
index 0000000..5a57963
--- /dev/null
+++ b/data-model/fdo-profile/source-system/1.0.0/schema/source-system-request-attributes.json
@@ -0,0 +1,23 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/source-system/1.0.0/source-system-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 a source system",
+ "$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"
+ },
+ "sourceSystemName": {
+ "type": "string",
+ "description" : "Name of Source System"
+ }
+ },
+ "required": [
+ "sourceSystemName"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/data-model/fdo-profile/source-system/1.0.0/schema/source-system-request.json b/data-model/fdo-profile/source-system/1.0.0/schema/source-system-request.json
new file mode 100644
index 0000000..daafb7f
--- /dev/null
+++ b/data-model/fdo-profile/source-system/1.0.0/schema/source-system-request.json
@@ -0,0 +1,31 @@
+{
+ "$id": "https://schemas.dissco.tech/schemas/fdo-profile/source-system/1.0.0/source-system-request.json",
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "description": "Schema for making source system 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/417a4f472f60f7974c12",
+ "description": "PID of the Digital Object Type"
+ },
+ "attributes": {
+ "type": "object",
+ "$ref": "https://schemas.dissco.tech/schemas/fdo-profile/source-system/1.0.0/source-system-request-attributes.json"
+ }
+ },
+ "required": [
+ "type",
+ "attributes"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "data"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file