%%{init: {'securityLevel': 'loose', 'theme':'neutral', 'themeVariables': { 'fontSize':'14px', 'fontFamily':'Roboto Mono'}}}%%
classDiagram
direction BT
class MaterialSampleRecord {
alternate_identifiers : string[]
complies_with : string[]
curation : MaterialSampleCuration
dc_rights : string
description : string
has_context_category : IdentifiedConcept[]
has_material_category : IdentifiedConcept[]
has_sample_object_type : IdentifiedConcept[]
keywords : IdentifiedConcept[]
label : string
last_modified_time : datetime
pid : uriorcurie
produced_by : SamplingEvent
registrant : Agent
related_resource : SampleRelation[]
sample_identifier : string
sampling_purpose : string
}
click MaterialSampleRecord href "MaterialSampleRecord.html" "Documentation"
MaterialSampleCuration --o MaterialSampleRecord : curation
IdentifiedConcept --o MaterialSampleRecord : has_context_category
IdentifiedConcept --o MaterialSampleRecord : has_material_category
IdentifiedConcept --o MaterialSampleRecord : has_sample_object_type
IdentifiedConcept --o MaterialSampleRecord : keywords
SamplingEvent --o MaterialSampleRecord : produced_by
Agent --o MaterialSampleRecord : registrant
SampleRelation --o MaterialSampleRecord : related_resource
class Agent {
affiliation : string
contact_information : string
name : string
pid : uriorcurie
role : string
}
click Agent href "Agent.html" "Documentation"
class SamplingSite {
description : string
is_part_of : uriorcurie[]
label : string
pid : uriorcurie
place_name : string[]
site_location : GeospatialCoordLocation
}
click SamplingSite href "SamplingSite.html" "Documentation"
GeospatialCoordLocation --o SamplingSite : site_location
class SamplingEvent {
authorized_by : string[]
description : string
has_context_category : IdentifiedConcept[]
has_feature_of_interest : string
label : string
pid : uriorcurie
project : string
responsibility : Agent[]
result_time : string
sample_location : GeospatialCoordLocation
sampling_site : SamplingSite
}
click SamplingEvent href "SamplingEvent.html" "Documentation"
IdentifiedConcept --o SamplingEvent : has_context_category
Agent --o SamplingEvent : responsibility
GeospatialCoordLocation --o SamplingEvent : sample_location
SamplingSite --o SamplingEvent : sampling_site
class GeospatialCoordLocation {
elevation : string
latitude : decimal
longitude : decimal
obfuscated : boolean
}
click GeospatialCoordLocation href "GeospatialCoordLocation.html" "Documentation"
class MaterialSampleCuration {
access_constraints : string[]
curation_location : string
description : string
label : string
pid : uriorcurie
responsibility : Agent[]
}
click MaterialSampleCuration href "MaterialSampleCuration.html" "Documentation"
Agent --o MaterialSampleCuration : responsibility
class SampleRelation {
description : string
label : string
relationship : string
target : uriorcurie
}
click SampleRelation href "SampleRelation.html" "Documentation"
class IdentifiedConcept {
label : string
pid : uriorcurie
scheme_name : string
scheme_uri : string
}
click IdentifiedConcept href "IdentifiedConcept.html" "Documentation"
Schema for documenting material samples
Schema documentation generated from linkml sources.
URI: https://w3id.org/isample/schema/2.0 Name: MaterialSampleRecord
How this schema is organized
The autogenerated reference below lists every class, slot, enumeration, and type alphabetically. For newcomers, that flat list can obscure the fact that the schema has a clear conceptual center and that most other classes exist to describe the context around it. This section is a hand-written orientation to help you find your way in.
The centerpiece: the sample record
MaterialSampleRecord is the schema’s core class. It is the digital record about a physical material sample — a rock core, a sherd of pottery, a biological specimen, a sediment grab. Every other class in the schema exists to describe something about a MaterialSampleRecord: how it was collected, where, by whom, what it is, and what has happened to it since.
The act of sampling
A sample doesn’t exist in isolation — it was produced by some act of sampling at some place and time. Three classes capture this:
- SamplingEvent — the event that produced the sample (who did it, when, under what authorization, following which protocol).
- SamplingSite — documentation of the place the sample was collected from, including place name(s) and the broader context it is part of.
- GeospatialCoordLocation — decimal latitude/longitude and elevation, used both for the sample’s precise coordinates and for the centroid of a sampling site.
After collection: curation and relationships
Once a sample leaves its original context, it has an ongoing life in collections, analyses, and derived artifacts:
- MaterialSampleCuration — where the sample is currently kept, how it can be accessed, and the history of its handling.
- SampleRelation — semantic links between samples (e.g. a derived subsample) or between a sample and a related resource.
Supporting types used across the model
Two classes appear throughout the model rather than being specific to any one part:
- Agent — a person (or organization) playing a role such as collector, curator, or registrant.
- IdentifiedConcept — a vocabulary term with an identifier and label, used for things like material category, context category, object type, and relationship kinds.
Putting it together
A complete record typically looks like: a MaterialSampleRecord — produced by a SamplingEvent at a SamplingSite with a GeospatialCoordLocation, described using IdentifiedConcept vocabulary terms for its material and context categories, with Agents named as registrant and responsible parties, curated per a MaterialSampleCuration, and optionally linked to other samples via SampleRelation.
Classes
| Class | Description |
|---|---|
| Agent | Object to represent a person who plays a role relative to sample collection o… |
| GeospatialCoordLocation | A physical location in decimal degrees using EPSG:4326 |
| IdentifiedConcept | An identifier with a label, used for vocabulary terms |
| MaterialSampleCuration | Information about the current storage of sample, access to sample, and events… |
| MaterialSampleRecord | This is a data object that is a digital representation of a material sample; … |
| SampleRelation | Semantic link to other samples or related resources |
| SamplingEvent | Information about the event resulting in the creation of the material sample |
| SamplingSite | Documentation of the site where the sample was collected, with place name(s) … |
Slots
| Slot | Description |
|---|---|
| access_constraints | Cultural, legal, or other policy issues that bear on access to view, borrow, … |
| affiliation | Name of an organization that employes or sponsors a person for the role they … |
| alternate_identifiers | One or more identifiers used to identify the sample in other contexts |
| authorized_by | A list of permits or other formal permission documents under which the sample… |
| complies_with | A list of policies, recommendations, best practices (etc |
| contact_information | E-mail address, telephone number, mailing address, or web site through which … |
| curation | Information about the current storage of sample, access to sample, and events… |
| curation_location | Information about where and how the sample is currently stored |
| dc_rights | A statement about various property rights associated with the resource, inclu… |
| description | Free text description of the subject of a triple |
| elevation | Should be a number and Unit of measure, and the vertical reference system |
| has_context_category | Top level context, based on the kind of feature sampled |
| has_feature_of_interest | A more specific name of the feature that was sampled, as opposed to the kind … |
| has_material_category | The kind of material that constitutes the sample |
| has_sample_object_type | The kind of object the material sample is |
| is_part_of | A link from a SamplingSite to a larger sampling site that spatially contains … |
| keywords | Free text terms or formal categories associate with sample to support discove… |
| label | A human intelligible string used to identify a thing, i |
| last_modified_time | time stamp when the metadata record was most recently updated |
| latitude | Angular coordinate measured positive north from the equator |
| longitude | Angular coordinate measured positive eastward from the prime meridian |
| name | String, name of a person |
| obfuscated | Flag to indicate that accuracy of provided coordinate location has been reduc… |
| pid | A string that identifies some resource |
| place_name | One or more names by which the sampling site is known |
| produced_by | Object that documents the sampling event–who, where, when the material sampl… |
| project | The name or identifier for a project that is the sponsor for a samplingEvent |
| registrant | Identification of the agent that registered the sample, with contact informat… |
| related_resource | Link to related resource with relationship property to indicate nature of con… |
| relationship | Term to identify relationship between host sample and the sample relation tar… |
| responsibility | Agent object includes person name, person identifier, affiliation, or organiz… |
| result_time | Date on which the sample was collected |
| role | Term that specifies how a person is related to a sample curation or collectio… |
| sample_identifier | URI that identifies the material sample described by this record |
| sample_location | Geopatial location of sample event; required default is WGS84 latitude, longi… |
| sampling_purpose | Term to specify why a sample was collection |
| sampling_site | Object that identifies the place where the sample was collected |
| scheme_name | String label for the concept scheme or vocabulary within which the keyword co… |
| scheme_uri | Identifier for the concept scheme or vocabulary within which the keyword conc… |
| site_location | Geopatial location of site; required default is WGS84 latitude, longitude in … |
| target | Identifier for the target resource in the relationship |
Enumerations
No enumerations are defined.
Types
| Type | Description |
|---|---|
| xsd:boolean | A binary (true or false) value |
| xsd:string | a compact URI |
| xsd:date | a date (year, month and day) in an idealized calendar |
| linkml:DateOrDatetime | Either a date or a datetime |
| xsd:dateTime | The combination of a date and time |
| xsd:decimal | A real number with arbitrary precision that conforms to the xsd:decimal speci… |
| xsd:double | A real number that conforms to the xsd:double specification |
| xsd:float | A real number that conforms to the xsd:float specification |
| xsd:integer | An integer |
| xsd:string | A string encoding a JSON Path |
| xsd:string | A string encoding a JSON Pointer |
| xsd:string | Prefix part of CURIE |
| shex:nonLiteral | A URI, CURIE or BNODE that represents a node in a model |
| shex:iri | A URI or CURIE that represents an object in the model |
| xsd:string | A string encoding a SPARQL Property Path |
| xsd:string | A character string |
| xsd:time | A time object represents a (local) time of day, independent of any particular… |
| xsd:anyURI | a complete URI |
| xsd:anyURI | a URI or a CURIE |
Subsets
No subsets are defined.
Revision history
SMR 2022-10-07. Schema for iSamples sample registry integration. Updated from 0.2 by synchronizing the vocabulary enumerations, change ‘id’ to ‘@id’ and ‘schema’ to ‘$schema’. Schema name is iSamplesSchemaCore1.0.json. Target JSON schema version is https://json-schema.org/draft/2019-09/schema. SMR 2023-03-17. Move authorized_by into SamplingEvent, change keywords to list of Keyword objects with string, uri, scheme and scheme URI. Reorder elements in slot list. Update scheme URI to 1.0 2023-06-13 SMR add project property on SamplingEvent, with text or URI value. 2024-01-17 SMR run linkml-lint from current linkml version before rebuilding JSON schema. 2024-04-19. DV ran yaml linter on the file to clean up formatting, put hard return in text bodies. Update schema URI to dereference with w3id. SMR 2024-09-13 add last_modified_time as property of MaterialSampleRecord. DV 2025-02-07. Modifications after discussion on iSamples tech. Change IdentifierObject to IdentifiedConcept, change identifier property labels to ‘pid’ add geo location directly to SamplingEvent, add has_context_category to SamplingEvent, change keywords values to IdentifiedConcept. make version 2.0