odis-arch
odis-arch copied to clipboard
need "platform" / "instrument" / "sensor" field in top-level JSON-LD
- "platform" key is lacking in schema.org
- oil rig is example of platform
- possibly use
instrument
Yes, develop from instrument. This can also serve for sensor instances and the like
@jmckenna - Just like in #101 - would you be able to get a minimal metadata spec for platform patterns?
@pbuttigieg ok, maybe also we can chat about this in tomorrow/Tuesday's Africa Region meeting.
I'm guessing fields like :
- platform PID (if available)
- platform serial number
- platform type (controlled vocab )
- manufactured by
- manufacture date
- status (deployed, in storage ,etc )
- first deployed
- latest deployment date
- instruments / devices (currently) on board (links to their own JSON-LD docs or at least a deref link to some vocab/ontology )
- instruments that can be hosted
- schematics (link to doc)
- operational parameters (link to doc)
- area of operation (spatial data )
- owned by
- operated by / maintained by
We'll likely need more than schema semantics, but lets not limit ourselves by that ab initio
I'm broadening this issue as this will likely be a generic solution for instruments in general.
@jmckenna - Just like in https://github.com/iodepo/odis-arch/issues/101 - would you be able to get a minimal metadata spec for platform patterns?
The Output of the RDA group on measurment instruments is a good place to start alignment for sensors https://github.com/rdawg-pidinst/schema/blob/master/schema.rst
@fils can we queue this for the next hack session?
@pbuttigieg asked me to provide our JSON (Schema) examples following the RDA PIDinst specification that we created for our sensor management system at Helmholtz Centre for Environmental Research, Germany This is nothing that has been circulated with the official RDA PIDinst representatives - just our own try to make use of the specification.
- PIDinst full JSON example:
{
"Identifier": {
"identifierValue": "http://hdl.handle.net/21.T11998/SMS-0000-001C-328B-D-STAGE-TEST",
"identifierType": "Handle"
},
"SchemaVersion": "1.0",
"LandingPage": "https://localhost.localdomain/devices/1",
"Name": "UFZ MET Soil Sensor 1",
"Owner": [
{
"ownerName": "Kollai, Helen",
"ownerContact": "[email protected]",
"ownerIdentifierType": "ORCID",
"ownerIdentifierValue": "https://orcid.org/0000-0003-0214-1336"
},
{
"ownerName": "Helmholtz Centre for Environmental Research",
"ownerContact": "[email protected]",
"ownerIdentifierValue": "https://ror.org/000h6jb29",
"ownerIdentifierType": "ROR"
}
],
"Manufacturer": [
{
"manufacturerName": "Helmholtz Centre for Environmental Research Electronics Unit",
"manufacturerIdentifierType": "URL",
"manufacturerIdentifierValue": "https://www.ufz.de/"
}
],
"Model": {
"modelName": "Perfect Sense 1.0",
"modelIdentifierType": "Handle",
"modelIdentifierValue": "http://hdl.handle.net/21.T11998/0000-001C-328C"
},
"Description": "Soil moisture and temperature sensor developed by UFZ.",
"InstrumentType": [
{
"instrumentTypeName": "Soil Moisture Sensor",
"instrumentTypeIdentifierType": "URL",
"instrumentTypeIdentifierValue": "http://vocabs.lter-europe.net/EnvThes/20354"
},
{
"instrumentTypeName": "Soil Temperature Sensor",
"instrumentTypeIdentifierValue": "http://vocabs.lter-europe.net/EnvThes/20357",
"instrumentTypeIdentifierType": "URL"
}
],
"MeasuredVariable": [
"soil moisture",
"soil temperature"
],
"Date": [
{
"dateValue": "2021-01-01",
"dateType": "Commissioned"
},
{
"dateValue": "2022-09-09",
"dateType": "DeCommissioned"
}
],
"RelatedIdentifier": [
{
"relatedIdentifierName": "technical documentation",
"relationType": "IsDescribedBy",
"relatedIdentifierType": "DOI",
"relatedIdentifierValue": "https://doi.org/10.5281/zenodo.5888547"
}
],
"AlternateIdentifier": [
{
"alternateIdentifierType": "SerialNumber",
"alternateIdentifierValue": "1234-4234-\\937 A"
}
]
}
- PIDinst JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "PIDinst schema 1.0",
"description": "Describes a schema for metadata conforming to the PIDinst metadata schema 1.0",
"additionalProperties": false,
"$comment": "Schema drafted by Helen Kollai (https://orcid.org/0000-0003-0214-1336), 2022-09-09",
"definitions": {
"instrumentTypeIdentifier": {
"type": "object",
"properties": {
"instrumentTypeIdentifierValue": {"type": "string"},
"instrumentTypeIdentifierType": {"$ref": "#/definitions/identifierType"}
},
"required": ["instrumentTypeIdentifierValue", "instrumentTypeIdentifierType"]
},
"dateValue": {
"type": "string",
"anyOf": [
{"format": "year"},
{"format": "yearmonth"},
{"format": "date"},
{"format": "datetime"}
]
},
"dateType": {
"type": "string",
"enum": [
"Commissioned",
"DeCommissioned"
]
},
"identifierType": {
"anyOf":[
{"type": "string"},
{"enum": [
"ARK",
"arXiv",
"bibcode",
"DOI",
"EAN13",
"EISSN",
"Handle",
"IGSN",
"ISBN",
"ISSN",
"ISTC",
"LISSN",
"LSID",
"PMID",
"PURL",
"UPC",
"URL",
"URN",
"w3id"
]}
]
},
"relatedIdentifierType": {
"type": "string",
"enum": [
"ARK",
"arXiv",
"bibcode",
"DOI",
"EAN13",
"EISSN",
"Handle",
"IGSN",
"ISBN",
"ISSN",
"ISTC",
"LISSN",
"LSID",
"PMID",
"PURL",
"UPC",
"URL",
"URN",
"w3id"
]
},
"alternateIdentifierType": {
"type": "string",
"enum": [
"SerialNumber",
"InventoryNumber",
"Other"
]
},
"relationType": {
"type": "string",
"enum": [
"IsDescribedBy",
"HasMetadata",
"IsNewVersionOf",
"IsPreviousVersionOf",
"IsComponentOf",
"HasComponent",
"References",
"IsIdenticalTo",
"IsAttachedTo",
"WasUsedIn"
]
},
"Url": { "format": "uri", "pattern": "^http(s)?:(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$" }
},
"type": "object",
"properties": {
"Identifier": {
"type": "object",
"title": "Identifier",
"description": "Unique string that identifies the instrument instance",
"properties": {
"identifierValue": {"type": "string"},
"identifierType": {"$ref": "#/definitions/identifierType"}
},
"required": ["identifierValue", "identifierType"],
"uniqueItems": true
},
"SchemaVersion": {
"type": "string",
"const": "1.0"
},
"LandingPage": {
"type": "string",
"$ref": "#/definitions/Url"
},
"Name": {
"type": "string"
},
"Owner": {
"title": "Owner",
"description": "Institution(s) responsible for the management of the instrument. This may include the legal owner, the operator, or an institute providing access to the instrument.",
"type": "array",
"items": {
"type": "object",
"properties": {
"ownerName": {"type": "string"},
"ownerContact": {"type": "string", "format": "email"},
"ownerIdentifierValue": {"type": "string"},
"ownerIdentifierType": {"$ref": "#/definitions/identifierType"}
},
"required": ["ownerName"],
"dependentRequired": {
"ownerIdentifierValue": ["ownerIdentifierType"],
"ownerIdentifierType": ["ownerIdentifierValue"]
}
},
"minItems": 1,
"uniqueItems": true
},
"Manufacturer": {
"title": "Manufacturer",
"description": "The instrument’s manufacturer(s) or developer. This may also be the owner for custom-build instruments.",
"type": "array",
"items": {
"type": "object",
"properties": {
"manufacturerName": {"type": "string"},
"manufacturerIdentifierValue": {"type": "string"},
"manufacturerIdentifierType": {"$ref": "#/definitions/identifierType"}
},
"required": ["manufacturerName"],
"dependentRequired": {
"manufacturerIdentifierValue": ["manufacturerIdentifierType"],
"manufacturerIdentifierType": ["manufacturerIdentifierValue"]
}
},
"minItems": 1,
"uniqueItems": true
},
"Model": {
"title": "Model",
"description": "Name of the model or type of device as attributed by the manufacturer.",
"type": "object",
"properties": {
"modelName": {"type": "string"},
"modelIdentifierValue": {"type": "string"},
"modelIdentifierType": {"$ref": "#/definitions/identifierType"}
},
"required": ["modelName"],
"dependentRequired": {
"modelIdentifierValue": ["modelIdentifierType"],
"modelIdentifierType": ["modelIdentifierValue"]
}
},
"Description": {
"type": "string"
},
"InstrumentType": {
"title": "Instrument Type",
"description": "Classification of the type of the instrument.",
"type": "array",
"items": {
"type": "object",
"properties": {
"instrumentTypeName": {"type": "string"},
"instrumentTypeIdentifierValue": {"type": "string"},
"instrumentTypeIdentifierType": {"$ref": "#/definitions/identifierType"}
},
"required": ["instrumentTypeName"],
"dependentRequired": {
"instrumentTypeIdentifierValue": ["instrumentTypeIdentifierType"],
"instrumentTypeIdentifierType": ["instrumentTypeIdentifierValue"]
}
},
"uniqueItems": true
},
"MeasuredVariable": {
"title": "Measured Variable",
"description": "The variable(s) that this instrument measures or observes.",
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
},
"Date": {
"title": "Date",
"description": "Dates relevant to the instrument.",
"type": "array",
"items": {
"type": "object",
"properties": {
"dateValue": {"$ref": "#/definitions/dateValue"},
"dateType": {"$ref": "#/definitions/dateType"}
},
"required": ["dateValue", "dateType"]
},
"uniqueItems": true
},
"RelatedIdentifier": {
"title": "Related Identifier",
"description": "Identifiers of related resources.",
"type": "array",
"items": {
"type": "object",
"properties": {
"relatedIdentifierName": {"type": "string"},
"relationType": {"$ref": "#/definitions/relationType"},
"relatedIdentifierValue": {"type": "string"},
"relatedIdentifierType": {"$ref": "#/definitions/relatedIdentifierType"}
},
"required": ["relatedIdentifierValue", "relatedIdentifierType"]
},
"uniqueItems": true
},
"AlternateIdentifier": {
"title": "Alternate Identifier",
"description": "Identifiers other than the PIDINST pertaining to the same instrument instance. This should be used if the instrument has a serial number. Other possible uses include an owner’s inventory number or an entry in some instrument data base.",
"type": "array",
"items": {
"type": "object",
"properties": {
"alternateIdentifierName": {"type": "string"},
"alternateIdentifierValue": {"type": "string"},
"alternateIdentifierType": {"$ref": "#/definitions/alternateIdentifierType"}
},
"required": ["alternateIdentifierValue", "alternateIdentifierType"]
},
"uniqueItems": true
}
},
"required": [
"Identifier",
"SchemaVersion",
"LandingPage",
"Name",
"Owner",
"Manufacturer"
]
}
@pbuttigieg Just adding a couple reference here that might be of interest. This is more work going in the relm of PIDs for instruments, not metadata for them. However, there is likely some element of the metadata kernel for the instrument PIDs of interest.
Refs: NSF RCN on FAIR Facilities and Instruments RDA Persistent Identification of Instruments WG
Direct link to the RDA metadata recommendations.
Linking in a related thread in the schema.org site: https://github.com/schemaorg/schemaorg/issues/1391
and a related document at IoT and Schema.org: Getting Started
@fils what's your take on this? I'd like to reconcile the expertise pool here. There's reasonable overlap, but also siloing
Talking about this in a SoSo call now - really all we need is a stable and well-crafted ontology/thesaurus for the properties above. Right now all I find is PDFs and white papers, which we can't actually use.
@CharlesVardeman also is hunting for such properties.
schema: Product is looking better for all these cases, with schema:instrument being used to assign role (just like object or device )
Include documentation on how an instrument etc links to a variableMeasured (finer grain than dataset or CW) via an Action.
Hi @pbuttigieg,
this is our sensor instance jsonld:
{ "@context": [ "https://schema.org/", { "prov": "http://www.w3.org/ns/prov#" }], "@graph": [ { "@id": "http://hdl.handle.net/21.T11998/0000-001A-3905-F", "@type": ["IndividualProduct","CreativeWork"], "name": "MySensor", "version": "5", "schemaVersion": "http://pdinst.schema.org/v1.1.", "serialNumber": "2490", "identifier": { "@type": "PropertyValue", "propertyID": "The PID registry URL", "value": "0000-001A-3905-F", "url": "https://linkedsystems.uk/system/instance/TOOL0022_2490/current/" }, "manufacturer": [ { "@type": "Organization", "@id": "http://vocab.nerc.ac.uk/collection/L35/current/MAN0013/", "name": "Sea-Bird Scientific", "url": "http://www.seabird.org" }, { "@type": "Organization", "@id": "http://vocab.nerc.ac.uk/collection/L35/current/MAN0014/", "name": "Valeport ", "url": "http://www.Valeport.org" } ], "model": { "@type": "ProductModel", "@id": "http://vocab.nerc.ac.uk/collection/L22/current/TOOL0022/", "name": "Sea-Bird SBE 37 MicroCat IM-CT with optional pressure (submersible) CTD sensor series", "url": "https://www.seabird.com/moored/sbe-37-sm-smp-smp-odo-microcat/family?productCategoryId=54627473786" },
"prov:wasRevisionOf": {
"@type": ["IndividualProduct","CreativeWork"],
"@id": "http://hdl.handle.net/21.T11998/0000-001A-3905-F/4/" }
}, [{ "@type": "Organization", "name": "BODC", "@id" : "https://ror.org/03102fn17", "identifier": { "@id": "https://ror.org/03102fn17", "@type": "PropertyValue", "propertyID": "https://registry.identifiers.org/registry/ror", "url": "http://www.bodc.ac.uk", "value": "03102fn17" }, "owns": { "@id":"http://hdl.handle.net/21.T11998/0000-001A-3905-F" }, "sameAs":[ "https://edmo.seadatanet.org/report/2181", "https://vocab.nerc.ac.uk/collection/B75/current/ORG00585/"]
}, { "@type": "Organization", "name": "BODC", "@id" : "https://ror.org/03102fn17", "identifier": { "@id": "https://ror.org/03102fn17", "@type": "PropertyValue", "propertyID": "https://registry.identifiers.org/registry/ror", "url": "http://www.bodc.ac.uk", "value": "03102fn17" }, "owns": { "@id":"http://hdl.handle.net/21.T11998/0000-001A-3905-F" }, "sameAs":[ "https://edmo.seadatanet.org/report/2181", "https://vocab.nerc.ac.uk/collection/B75/current/ORG00585/"]
}], [{ "@type": "Person", "@id" : "https://orcid.org/0000-0003-4163-9575", "identifier": { "@id": "https://orcid.org/0000-0003-4163-9575", "@type": "PropertyValue", "propertyID": "https://registry.identifiers.org/registry/orcid", "url": "https://orcid.org/0000-0003-4163-9575", "value": "0000-0003-4163-9575" }, "owns": { "@id":"http://hdl.handle.net/21.T11998/0000-001A-3905-F" }, "sameAs": "http://www.example.com/Lou" }, { "@type": "Person", "@id" : "https://orcid.org/0000-0001-8042-6391", "identifier": { "@id": "https://orcid.org/0000-0001-8042-6391", "@type": "PropertyValue", "propertyID": "https://registry.identifiers.org/registry/orcid", "url": "https://orcid.org/0000-0001-8042-6391", "value": "0000-0001-8042-6391" }, "owns": { "@id":"http://hdl.handle.net/21.T11998/0000-001A-3905-F" }, "sameAs": "http://www.example.com/Alex" }
]
]
}
And this is the sensor management system and team we are collaborating with: https://sms.atmohub.kit.edu/
Hi, I suggested schema.org mapping to PIDINST working group in issue (https://github.com/rdawg-pidinst/usage/issues/3) : https://docs.google.com/spreadsheets/d/1LlTY4DLq5jWIs59ugaoTZxHj5m5w1gs_qEpka7rd4sI/edit ( based on IndividualProduct ) .