ARC Process Core Crate
- Version: 0.1
- Authors: ARC RO-Crate community
- License: MIT License
- Example conforming crate: ro-crate-metadata.json
- Profile Crate: ro-crate-metadata.jsonld
- Extends:
- JSON-LD context: https://www.researchobject.org/ro-terms/arc/context.jsonld
- Vocabulary terms: https://w3id.org/ro/terms/arc#
This profile uses terminology from the RO-Crate 1.2 specification, and extends it with additional terms from the ARC ro-terms and Bioschemas namespace.
- Table of contents
Overview
The aim of the profile is to be able to fully represent ISA-JSON as RO-Crate, fully capturing the metadata and files in a non-lossy form such that it should be possible to convert between one to the other, in either direction, without loss of information.
The profile relies on types from Bioschemas types:
LabProtocol - A child of HowTo to make it clearer that it is intended to specifically describe the planned instructions for upcoming lab processes.
LabProcess - A child of Action, to specifically describe the details and outcomes of an executed LabProtocol. Thereby separating the “what was planned” and “what happened” between LabProtocol and LabProcess respectively. A working group is working on the new type and adaptations of existing types.
The following graph summarizes the Process Core model in terms of Bioschemas/Schema.org vocabulary:
flowchart TD
dataset[Dataset]
Process[LabProcess]
Protocol[LabProtocol]
Sample[Sample]
DataFile[File]
prop[PropertyValue]
dataset --hasPart----> DataFile
dataset --processSequence--> Process
Process --"result"---> DataFile
Process --"result"--> Sample
Process --"object"--> Sample
Process --executesLabProtocol--> Protocol
Process --parameterValue---> prop
Sample --additionalProperty--> prop
Protocol --labEquipment---> prop
Protocol --reagent---> prop
Example Metadata File (ro-crate-metadata.json)
{
"@context": [
"https://w3id.org/ro/crate/1.2/context",
{
"Sample": "https://bioschemas.org/Sample",
"LabProtocol": "https://bioschemas.org/LabProtocol",
"LabProcess": "https://bioschemas.org/LabProcess",
"computationalTool": "https://bioschemas.org/properties/computationalTool",
"labEquipment": "https://bioschemas.org/properties/labEquipment",
"reagent": "https://bioschemas.org/properties/reagent",
"intendedUse": "https://bioschemas.org/properties/intendedUse",
"executesLabProtocol": "https://bioschemas.org/properties/executesLabProtocol",
"parameterValue": "https://bioschemas.org/properties/parameterValue",
"columnIndex": "https://w3id.org/ro/terms/arc#columnIndex"
}
],
"@graph": [
{
"@id": "datafile.wiff",
"@type": "File",
"name": "datafile.wiff"
},
{
"@id": "#CharacteristicValue_organism_Arabidopsis_thaliana",
"@type": "PropertyValue",
"additionalType": "CharacteristicValue",
"name": "organism",
"value": "Arabidopsis thaliana",
"propertyID": "https://bioregistry.io/OBI:0100026",
"valueReference": "http://purl.obolibrary.org/obo/NCBITAXON_3702"
},
{
"@id": "#Material_MyObservable",
"@type": "Sample",
"additionalType": "Material",
"name": "MyObservable",
"additionalProperty": {
"@id": "#CharacteristicValue_organism_Arabidopsis_thaliana"
}
},
{
"@id": "#Sample_MySample",
"@type": "Sample",
"additionalType": "Sample",
"name": "MySample"
},
{
"@id": "#CharacteristicValue_Temperature_25",
"@type": "PropertyValue",
"additionalType": "CharacteristicValue",
"name": "Temperature",
"value": "25",
"propertyID": "https://bioregistry.io/NCIT:C25206",
"unitCode": "http://purl.obolibrary.org/obo/UO_0000027",
"unitText": "degree Celsius"
},
{
"@id": "#Process_Preparation",
"@type": "LabProcess",
"name": "Preparation",
"object": {
"@id": "#Material_MyObservable"
},
"result": {
"@id": "#Sample_MySample"
},
"parameterValue": {
"@id": "#CharacteristicValue_Temperature_25"
}
},
{
"@id": "#Process_Measurement",
"@type": "LabProcess",
"name": "Measurement",
"object": {
"@id": "#Sample_MySample"
},
"result": {
"@id": "datafile.wiff"
}
},
{
"@id": "LICENSE",
"@type": "CreativeWork",
"text": "ALL RIGHTS RESERVED BY THE AUTHORS"
},
{
"@id": "./",
"@type": "Dataset",
"description": "An example of a ROCrate with a core process model, including preparation and measurement processes.",
"name": "Experimental ARC Process Core Crate Example",
"hasPart": {
"@id": "datafile.wiff"
},
"about": [
{
"@id": "#Process_Preparation"
},
{
"@id": "#Process_Measurement"
}
],
"dateCreated": "2026-06-24T23:04:48.2431278",
"license": {
"@id": "LICENSE"
}
},
{
"@id": "ro-crate-metadata.json",
"@type": "CreativeWork",
"conformsTo": {
"@id": "https://w3id.org/ro/crate/1.2"
},
"about": {
"@id": "./"
}
}
]
}
Requirements
Dataset
schema.org/Dataset containing and contexualizing the processes.
| Property | Required | Expected Type | Description |
|---|---|---|---|
| @id | MUST | Text or URL | According to ROCrate specification. |
| @type | MUST | Text | MUST be ‘schema.org/Dataset’ |
| about | SHOULD | bioschemas.org/LabProcess | The processes described here and possibly leading up to the files grouped in this dataset. |
| hasPart | COULD | File | Data files resulting from the process sequence. |
LabProcess
Has the new Bioschemas DRAFT bioschemas.org/LabProcess type and maps to the ISA-JSON Process
| Property | Required | Expected Type | Description |
|---|---|---|---|
| @id | MUST | Text or URL | Could identify the process using the isa metadata filename and the protocol reference or process name. |
| @type | MUST | Text | MUST be ‘bioschemas.org/LabProcess’ |
| name | MUST | Text | - |
| object | SHOULD | bioschemas.org/Sample or File | The input of the process. If there are multiple inputs, they SHOULD be stored as a sorted list to establish correspondence with outputs. (Both lists need the same length in that case.) |
| result | SHOULD | bioschemas.org/Sample or File | The output of the process. If there are multiple outputs, they SHOULD be stored as a sorted list to establish correspondence with inputs. (Both lists need the same length in that case.) |
| executesLabProtocol | SHOULD | bioschemas.org/LabProtocol | The protocol executed |
| parameterValue | SHOULD | schema.org/PropertyValue (Parameter) | A parameter value of the experimental process, usually a key-value pair using ontology terms |
LabProtocol
Is based on the Bioschemas bioschemas.org/LabProtocol type and maps to the ISA-JSON Protocol
| Property | Required | Expected Type | Description |
|---|---|---|---|
| @id | MUST | Text or URL | Could be the url pointing to the protocol resource. |
| @type | MUST | Text | MUST be ‘bioschemas.org/LabProtocol’ |
| description | SHOULD | Text | A short description of the protocol (e.g. an abstract) |
| intendedUse | SHOULD | schema.org/DefinedTerm or Text or URL | The protocol type as an ontology term |
| name | SHOULD | Text | Main title of the LabProtocol. |
| computationalTool | COULD | schema.org/DefinedTerm or schema.org/PropertyValue (Component) or schema.org/SoftwareApplication | Software or tool used as part of the lab protocol to complete a part of it. |
| labEquipment | COULD | schema.org/DefinedTerm or schema.org/PropertyValue (Component) or Text or URL | For LabProtocols it would be a laboratory equipment use by a person to follow one or more steps described in this LabProtocol. |
| reagent | COULD | schema.org/BioChemEntity or schema.org/DefinedTerm or schema.org/PropertyValue (Component) or Text or URL | Reagents used in the protocol. |
| url | COULD | URL | Pointer to protocol resources external to the ISA-Tab that can be accessed by their Uniform Resource Identifier (URI). |
| version | COULD | Number or Text | An identifier for the version to ensure protocol tracking. |
Sample
Is based on the Bioschemas bioschemas.org/Sample type, and represents the ISA-JSON Sample, Source and Material
| Property | Required | Expected Type | Description |
|---|---|---|---|
| @id | MUST | Text or URL | Could be the unique sample name. |
| @type | MUST | Text | MUST be ‘bioschemas.org/Sample’ |
| name | MUST | Text | A name identifying the sample. |
| additionalProperty | SHOULD | schema.org/PropertyValue (Characteristic or Factor) | characteristics or factors |
Data
Describes and points to a Data file or a segment of a Data file (via data fragment selectors), and maps to the ISA-JSON Data
| Property | Required | Expected Type | Description |
|---|---|---|---|
| @id | MUST | Text or URL | Should be the path pointing to the file |
| @type | MUST | Text | MUST be ‘File’ or ‘MediaObject’ |
| name | MUST | Text or URL | The name of the file. |
| comment | COULD | schema.org/Comment | Comment |
| disambiguatingDescription | COULD | Text | The type of the data file (“Raw Data File”, “Derived Data File” or “Image File”). |
| encodingFormat | COULD | Text of URL | Media format as a MIME type |
| hasPart | COULD | Text of URL | Data fragments of this Data object, described by data fragment selectors. SHOULD not be used on data fragments. |
| usageInfo | COULD | Text of URL | Description/specification of the data fragment selector, if the object describes a data fragment and a selector is present in the path/@id. SHOULD only be used on data fragments. |
Entities referenced by an processes’s object or result SHOULD be of type File (an RO-Crate alias for MediaObject) for files, Dataset for directories and Collection for multi-file datasets, but MAY be a CreativeWork for other types of data (e.g. an online database); they MAY be of type PropertyValue to capture numbers/strings that are not stored as files.
Data entities involved in an application’s input and output SHOULD have an @id that reflects the original file or directory name as processed by the application, but MAY be renamed to avoid clashes with other entities in the crate. In this case, they SHOULD refer to the original name via alternateName. This is particularly important to support reproducibility in cases where an application expects to find input in specific locations and with specific names (see the MIRAX example in Representing multi-file objects).
Processes as graph edges
Data Fragment-level annotation
[
{
"@id": "raw_data1.wiff",
"@type": "File",
"name": "raw_data1.wiff"
},
{
"@id": "raw_data2.wiff",
"@type": "File",
"name": "raw_data2.wiff"
},
{
"@id": "processed_data.csv#col=1",
"@type": "File",
"name": "processed_data.csv#col=1",
"encodingFormat": "text/csv",
"usageInfo": "https://datatracker.ietf.org/doc/html/rfc7111"
},
{
"@id": "processed_data.csv#col=2",
"@type": "File",
"name": "processed_data.csv#col=2",
"encodingFormat": "text/csv",
"usageInfo": "https://datatracker.ietf.org/doc/html/rfc7111"
},
{
"@id": "#Process_DataProcessing_1",
"@type": "LabProcess",
"name": "DataProcessing_1",
"object": {
"@id": "raw_data1.wiff"
},
"result": {
"@id": "processed_data.csv#col=1"
}
},
{
"@id": "#Process_DataProcessing_2",
"@type": "LabProcess",
"name": "DataProcessing_2",
"object": {
"@id": "raw_data2.wiff"
},
"result": {
"@id": "processed_data.csv#col=2"
}
}
]
Experimental process
Computational process
PropertyValue Annotations