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.

___________________________________________________________________________bfo:occurrentbfo:entitybfo:continuantbfo:processbfo:temporal regionbfo:one dimensional t.r.bfo:zero dimensional t.r.ex:process 1ex:period 1ex:process 2ex:period 2ex:startex:endex:object 1ex:some time rdfs:subClassOfrdfs:subClassOfrdfs:subClassOfrdfs:subClassOfrdfs:subClassOfrdfs:subClassOfbfo:occupies_temporal_regionbfo:occupies_remporal_regionbfo:has_first_instantbfo:has_last_instantbfo:proper_temporal_part_ofbfo:existsAtrdf:typerdf:typerdf:typerdf:typerdf:typerdf:typerdf:typerdf:type
@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 .
(see folder patterns/temporal region)


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.
___________________________________________________________________________bfo:processbfo:occurrentex:process parentex:process step1ex:process step3ex:process step2aex:process step2b rdfs:subClassOfpmd:starts_withpmd:ends_withro:has partro:has partro:has partro:has partbfo:precedesbfo:precedesbfo:precedesbfo:precedespmd:simultaneous_withrdf:typerdf:typerdf:typerdf:typerdf:type
@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_input OBI_0000293
  • obi:has_specified_output OBI_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.
ex:process 1ex:object1ex:object2ex:process 2ex:object3pmd:manufacturing processpmd:coating processobi:planned processbfo:processbfo:object obi:has_specified_inputobi:has_specified_outputobi:has_specified_inputobi:has_specified_outputrdf:typerdf:typeowl:subClassOfowl:subClassOfowl:subClassOfrdf:typerdf:typerdf:type

@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:
(see folder patterns/input and output of processes)


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 role RO_0000087
  • bfo:has realization BFO_0000054
  • obi:has specified input OBI_0000293

  • Example Use Case: Specifying the role of a specimen of a material object that participates a process as input.

ex:process 1ex:object 1ex:result 1ex:objective 1pmd:fatigue testing processpmd:fatigue testing process: obi:planned processbfo:processbfo:objectex:role 1obi:evaluant role obi:has_specified_inputobi:has_specified_outputachieves_planned_objectiveiao:is aboutiao:is aboutrdf:typeowl:subClassOfowl:subClassOfrdf:typero:has rolerdf:typebfo:has realization
@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:bearerOf
  • bfo:existAt
  • iao:isAbout
  • pmd:derivesFrom
  • Example Use Case: Specifying that value of hardness of a specimen at certain point of time.

Visualization of Pattern 5


Pattern 6 - Scalar Measurement

  • Purpose: Represent measured value of some material characteristic.
  • Core Properties:
  • iao:isQualityMeasuredAs
  • bfo:realizes
  • iao:isAbout
  • pmd:hasInput
  • pmd:hasOutput
  • pmd:hasValueSpecification
  • pmd:specifiesValueOf
  • Example Use Case: Specifying the measured heat capacity value of a specimen.

Visualization of Pattern 6


Pattern 7 - Scalar Value Specification

  • Purpose: Represents scalar physical quantities, combining a numerical value and a unit.
  • Core Properties:
  • obi:hasSpecifiedNumericValue
  • iao:hasMeasurementUnitLabel
  • pmd:hasValueSpecification
  • pmd:specifiesValueOf
  • Example Use Case: Specifying measurements like length, mass, or time with standard units.

Visualization of Pattern 7


Pattern 8 - Categorical Value Specification

  • Purpose: Represents object characteristics, described by belonging to some category.
  • Core Properties:
  • obi:hasSpecifiedValue
  • iao:isQualityMeasuredAs
  • pmd:hasValueSpecification
  • pmd:specifiesValueOf
  • Example Use Case: Specifying that material belongs to a certain category, e.g., is a polymer.

Visualization of Pattern 8


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:isQualityMeasuredAs
  • iao:isAbout
  • pmd:hasValueSpecification
  • pmd: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.

Visualization of Pattern 9