Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

need "platform" / "instrument" / "sensor" field in top-level JSON-LD #68

Open
jmckenna opened this issue Mar 15, 2022 · 16 comments
Open

Comments

@jmckenna
Copy link
Contributor

  • "platform" key is lacking in schema.org
    • oil rig is example of platform
  • possibly use instrument
@pbuttigieg
Copy link
Collaborator

pbuttigieg commented Aug 15, 2022

Yes, develop from instrument. This can also serve for sensor instances and the like

@pbuttigieg
Copy link
Collaborator

@jmckenna - Just like in #101 - would you be able to get a minimal metadata spec for platform patterns?

@jmckenna
Copy link
Contributor Author

@pbuttigieg ok, maybe also we can chat about this in tomorrow/Tuesday's Africa Region meeting.

@pbuttigieg
Copy link
Collaborator

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

@pbuttigieg pbuttigieg changed the title need "platform" field in top-level JSON-LD need "platform" / "instrument" / "sensor" field in top-level JSON-LD Dec 13, 2022
@pbuttigieg
Copy link
Collaborator

pbuttigieg commented Dec 13, 2022

I'm broadening this issue as this will likely be a generic solution for instruments in general.

@jmckenna - Just like in #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

@pbuttigieg
Copy link
Collaborator

@fils can we queue this for the next hack session?

@heluna
Copy link

heluna commented Dec 15, 2022

@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.

  1. 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"
    }
  ]
}
  1. 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"
    ]
}

@fils
Copy link
Collaborator

fils commented Feb 3, 2023

@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.

@fils fils added the TODO label Feb 3, 2023
@fils
Copy link
Collaborator

fils commented Mar 13, 2023

Linking in a related thread in the schema.org site: schemaorg/schemaorg#1391

and a related document at IoT and Schema.org: Getting Started

@pbuttigieg
Copy link
Collaborator

@fils what's your take on this? I'd like to reconcile the expertise pool here. There's reasonable overlap, but also siloing

@pbuttigieg
Copy link
Collaborator

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.

@pbuttigieg
Copy link
Collaborator

schema: Product is looking better for all these cases, with schema:instrument being used to assign role (just like object or device )

@pbuttigieg
Copy link
Collaborator

Include documentation on how an instrument etc links to a variableMeasured (finer grain than dataset or CW) via an Action.

@alko-k
Copy link

alko-k commented Oct 17, 2024

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"
}

]
]
}

@alko-k
Copy link

alko-k commented Oct 17, 2024

And this is the sensor management system and team we are collaborating with: https://sms.atmohub.kit.edu/

@rduyme
Copy link

rduyme commented Nov 20, 2024

Hi, I suggested schema.org mapping to PIDINST working group in issue (rdawg-pidinst/usage#3) : https://docs.google.com/spreadsheets/d/1LlTY4DLq5jWIs59ugaoTZxHj5m5w1gs_qEpka7rd4sI/edit ( based on IndividualProduct ) .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants