Usage Patterns
In ontology development and usage, usage patterns play a critical role in addressing recurring modeling requirements. These patterns provide standardized, reusable semantic snippets that facilitate consistent representation of relationships between instances and entities. Furthermore, such patterns may be used to create SHACL shapes to include constraints in a knowledge representation. By following usage patterns, ontology users and developers can ensure uniformity, clarity, and reusability in their models.
The sections below illustrate how to read and apply these patterns. Each pattern includes its purpose, description, relevant properties, visualization, and example.
Pattern 1 - Temporal Region
- Purpose: Specifying the boundaries of a process on the time axis.
- Core Properties:
bfo:occupies temporal region(BFO_0000199)bfo:proper temporal part of(BFO_0000136)bfo:has first instant(BFO_0000222)bfo:has last instant(BFO_0000224)pmd:ends with(PMD_0060003)- Example Use Case: Specifying certain moments of time when some industrial process started or ended.
@prefix : <https://w3id.org/pmd/co/test#> .
@prefix ex: <https://www.example.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <https://w3id.org/pmd/co/test#> .
@prefix process: <http://purl.obolibrary.org/obo/BFO_0000015> . #Class
@prefix continuant: <http://purl.obolibrary.org/obo/BFO_0000002> . #Class
@prefix temporal_region: <http://purl.obolibrary.org/obo/BFO_0000008> . #Class
@prefix one-dimensional_temporal_region: <http://purl.obolibrary.org/obo/BFO_0000038> . #Class
@prefix zero-dimensional_temporal_region: <http://purl.obolibrary.org/obo/BFO_0000148> . #Class
@prefix occupies_temporal_region: <http://purl.obolibrary.org/obo/BFO_0000199> . #ObjectProperty
@prefix proper_temporal_part_of: <http://purl.obolibrary.org/obo/BFO_0000136> . #ObjectProperty
@prefix has_first_instant: <http://purl.obolibrary.org/obo/BFO_0000222> . #ObjectProperty
@prefix has_last_instant: <http://purl.obolibrary.org/obo/BFO_0000224> . #ObjectProperty
@prefix exists_at: <http://purl.obolibrary.org/obo/BFO_0000108> . #ObjectProperty
<https://w3id.org/pmd/co/test/shape/temporal_region> rdf:type owl:Ontology .
ex:process_1 a process: .
ex:process_2 a process: .
ex:period_1 a one-dimensional_temporal_region: .
ex:period_2 a one-dimensional_temporal_region: .
ex:some_time a temporal_region: .
ex:object_1 a continuant: .
ex:start a zero-dimensional_temporal_region: .
ex:end a zero-dimensional_temporal_region: .
ex:process_1 occupies_temporal_region: ex:period_1 .
ex:process_2 occupies_temporal_region: ex:period_2 .
ex:period_2 has_first_instant: ex:start .
ex:period_2 has_last_instant: ex:end .
ex:period_1 proper_temporal_part_of: ex:period_2 .
ex:object_1 exists_at: ex:some_time .
Pattern 2 - Process Chain
- Purpose: Represent complex processes, consisting of simultaneous and serial subprocesses.
- Core Properties:
bfo:precedes(BFO_0000063)ro:has part(BFO_0000051)pmd:starts with(PMD_0060002)pmd:ends with(PMD_0060003)pmd:simultaneous with(PMD_0060004)- Example Use Case: Specifying the structure of commplex manufacturing processes consisting of several stages.
@prefix : <https://w3id.org/pmd/co/test#> .
@prefix ex: <https://www.example.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <https://w3id.org/pmd/co/test#> .
@prefix process: <http://purl.obolibrary.org/obo/BFO_0000015> . #Class
@prefix has_part: <http://purl.obolibrary.org/obo/BFO_0000051> . #ObjectProperty
@prefix precedes: <http://purl.obolibrary.org/obo/BFO_0000063> . #ObjectProperty
@prefix starts_with: <https://w3id.org/pmd/co/PMD_0060002> . #ObjectProperty
@prefix ends_with: <https://w3id.org/pmd/co/PMD_0060003> . #ObjectProperty
@prefix simultaneous_with: <https://w3id.org/pmd/co/PMD_0060004> . #ObjectProperty
<https://w3id.org/pmd/co/test/shape/process_chain> rdf:type owl:Ontology .
ex:process_parent a process: .
ex:process_step1 a process: .
ex:process_step2a a process: .
ex:process_step2b a process: .
ex:process_step3 a process: .
ex:process_parent starts_with: ex:process_step1 .
ex:process_parent ends_with: ex:process_step3 .
ex:process_parent has_part: ex:process_step1, ex:process_step2a, ex:process_step2b, ex:process_step3 .
ex:process_step1 precedes: ex:process_step2a, ex:process_step2b, ex:process_step3 .
ex:process_step2a precedes: ex:process_step3 .
ex:process_step2a simultaneous_with: ex:process_step2b .
(see folder patterns/process chain)
Pattern 3 - Process Inputs and Outputs
- Purpose: Describes how to represent inputs and outputs for planned processes typically involving material entities or information-bearing entities.
- Core Properties:
obi:has_specified_inputOBI_0000293obi:has_specified_outputOBI_0000299- Example Use Case: A planned process with possibility of multiple inputs and outputs, e.g., testing properties of a metallic sample, or transforming a piece of material into another product.
- Further notes: There are also the properties has input and has output from RO. It is intended to use the OBI has specified input and has specified output on planned processes (as also indicated by the domain of those) and the RO variant on other kinds of processes.
@prefix : <https://w3id.org/pmd/co/test#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ex: <http://example.com/> .
@base <https://w3id.org/pmd/co/test> .
@prefix planned_process: <http://purl.obolibrary.org/obo/OBI_0000011> .
@prefix manufacturing_process: <https://w3id.org/pmd/co/PMD_0000833> .
@prefix coating: <https://w3id.org/pmd/co/PMD_0000563> .
@prefix has_specified_input: <http://purl.obolibrary.org/obo/OBI_0000293> .
@prefix has_specified_output: <http://purl.obolibrary.org/obo/OBI_0000299> .
@prefix object: <http://purl.obolibrary.org/obo/BFO_0000030> .
<https://w3id.org/pmd/co/test> rdf:type owl:Ontology .
manufacturing_process: owl:subClassOf planned_process: .
ex:process1 a manufacturing_process: ;
has_specified_input: ex:object1 ;
has_specified_output: ex:object2 .
ex:process2 a coating:;
has_specified_input: ex:object2 ;
has_specified_output: ex:object3 .
ex:object1 a object:
ex:object2 a object:
ex:object3 a object:
Pattern 4 - Realizable Entities (Role)
- Purpose: Represent characteristics of the objects, brought to existence by a specific situation. E.g. a role, which is relalized in a process.
- Core Properties:
ro:has roleRO_0000087bfo:has realizationBFO_0000054-
obi:has specified inputOBI_0000293 -
Example Use Case: Specifying the role of a specimen of a material object that participates a process as input.
@prefix : <https://w3id.org/pmd/co/test#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ex: <http://example.com/> .
@base <https://w3id.org/pmd/co/test> .
@prefix object: <http://purl.obolibrary.org/obo/BFO_0000030> .
@prefix evaluant_role: <http://purl.obolibrary.org/obo/OBI_0000067> .
@prefix has_role: <http://purl.obolibrary.org/obo/RO_0000087> .
@prefix has_realization: <http://purl.obolibrary.org/obo/BFO_0000054> .
@prefix planned_process: <http://purl.obolibrary.org/obo/OBI_0000011> .
@prefix fatigue_testing_process: <https://w3id.org/pmd/co/PMD_0000638> .
@prefix has_specified_input: <http://purl.obolibrary.org/obo/OBI_0000293> .
@prefix has_specified_output: <http://purl.obolibrary.org/obo/OBI_0000299> .
@prefix achieves_planned_objective: <http://purl.obolibrary.org/obo/OBI_0000417> .
@prefix is_about: <http://purl.obolibrary.org/obo/IAO_0000136> .
<https://w3id.org/pmd/co/test/role> rdf:type owl:Ontology .
ex:process_1 a fatigue_testing_process: .
ex:process_1 has_specified_input: ex:object_1 .
ex:process_1 achieves_planned_objective: ex:objective_1 .
ex:process_1 has_specified_output: ex:result_1 .
ex:objective_1 is_about: ex:object_1 .
ex:result_1 is_about: ex:object_1 .
ex:object_1 a object: .
ex:object_1 has_role: ex:role_1 .
ex:role_1 a evaluant_role: .
ex:role_1 has_realization: ex:process_1 .
Pattern 5 - Realizable Entities (Qualities)
- Purpose: Represent inherent characteristics of the objects, having certain scalar values at moments/periods of time.
- Core Properties:
bfo:bearerOfbfo:existAtiao:isAboutpmd:derivesFrom- Example Use Case: Specifying that value of hardness of a specimen at certain point of time.
Pattern 6 - Scalar Measurement
- Purpose: Represent measured value of some material characteristic.
- Core Properties:
iao:isQualityMeasuredAsbfo:realizesiao:isAboutpmd:hasInputpmd:hasOutputpmd:hasValueSpecificationpmd:specifiesValueOf- Example Use Case: Specifying the measured heat capacity value of a specimen.
Pattern 7 - Scalar Value Specification
- Purpose: Represents scalar physical quantities, combining a numerical value and a unit.
- Core Properties:
obi:hasSpecifiedNumericValueiao:hasMeasurementUnitLabelpmd:hasValueSpecificationpmd:specifiesValueOf- Example Use Case: Specifying measurements like length, mass, or time with standard units.
Pattern 8 - Categorical Value Specification
- Purpose: Represents object characteristics, described by belonging to some category.
- Core Properties:
obi:hasSpecifiedValueiao:isQualityMeasuredAspmd:hasValueSpecificationpmd:specifiesValueOf- Example Use Case: Specifying that material belongs to a certain category, e.g., is a polymer.
Pattern 9 - Material and Device Specification
- Purpose: Specify the material, from which the object is made, by stating that it complies with the certain material specification. Or, specifying the device in the same manner.
- Core Properties:
iao:isQualityMeasuredAsiao:isAboutpmd:hasValueSpecificationpmd:specifiesValueOf- Core Idea: provide a class pmd:MaterialSpecification/pmd:DeviceSpecification as a subclass of iao:InformationContentEntity, to which the material/device object can adhere.
- Example Use Case: Specifying the material of a steel sheet to be the steel S355J2.