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: the pattern defines a temporal ontology where processes unfold within bounded durations, those durations may be nested, and continuant entities exist at specific times. It provides a detailed temporal and ontological structure linking processes, periods, instants, and enduring entities in a coherent temporal framework.
  • Description: This graph describes a set of temporal and ontological relationships among processes, temporal regions, and continuant entities. The graph models how different kinds of entities relate to time and duration through their association with temporal regions and instants. Within this model, there are two processes — (ex:process_1) and (ex:process_2) — each representing an occurrence or event that unfolds over time. Both processes are linked to distinct one-dimensional temporal regions (ex:period_1, ex:period_2), via the occupies_temporal_region property. This expresses that each process extends through a particular temporal duration. The temporal structure is further refined through hierarchical and boundary definitions. The region (ex:period_1) is described as a proper_temporal_part_of (ex:period_2), indicating that the first period is entirely contained within the second, but not identical to it. The larger region (ex:period_2) has defined temporal boundaries: it has_first_instant (ex:start) and has_last_instant (ex:end), both of which are represented as zero-dimensional temporal regions, signifying discrete points in time marking the beginning and end of that duration. In addition to the processes and periods, the model includes a continuant entity, (ex:object_1), which exists_at a particular temporal region, (ex:some_time). This denotes that the continuant maintains existence at or during a specific time interval, emphasizing persistence or presence within the temporal framework.

___________________________________________________________________________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 processes, consisting of simultaneous and serial subprocesses.
  • Core Properties:
  • bfo:precedes (BFO_0000063)
  • ro:has part (BFO_0000051)
  • ro:starts with (RO_0002224)
  • ro:ends with (RO_0002230)
  • ro:simultaneous with (RO_0002082)
  • Example Use Case: the pattern defines a hierarchical and temporal relationship among processes: a parent process composed of multiple interconnected stages, where the first step leads into two concurrent middle steps, both of which precede the final one. This structure models a workflow with clear order, parallel execution, and a defined start and end.
  • Description: This graph describes a structured process chain that organizes several interrelated process steps within a defined sequence. The graph defines relationships among processes using temporal and structural object properties. At the highest level, there is a parent process (ex:process_parent), which serves as the overarching workflow. This process begins with (ex:process_step1) and concludes with (ex:process_step3), as indicated by the starts_with and ends_with relationships. The parent process is composed of several parts — specifically (ex:process_step1), (ex:process_step2a), (ex:process_step2b), and (ex:process_step3) — through the has_part property, defining the hierarchical structure of the process. The sequence begins with (ex:process_step1), which acts as the initial phase. This step precedes (ex:process_step2a), (ex:process_step2b), and (ex:process_step3), establishing it as the starting point from which subsequent processes emerge. Among the intermediate steps, (ex:process_step2a) and (ex:process_step2b) are connected not only sequentially but also through simultaneity: (ex:process_step2a) is defined as simultaneous_with (ex:process_step2b), indicating that they occur at the same time within the overall process. Finally, both (ex:process_step2a) and (ex:process_step2b) lead to (ex:process_step3), the final step of the chain. This closing process represents the conclusion of the overall workflow, marking the endpoint of the structured and partially parallel sequence defined in the RDF model.
___________________________________________________________________________bfo:processbfo:occurrentex:process parentex:process step1ex:process step3ex:process step2aex:process step2b rdfs:subClassOfro:starts_withro:ends_withro:has partro:has partro:has partro:has partbfo:precedesbfo:precedesbfo:precedesbfo:precedesro: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: <http://purl.obolibrary.org/obo/RO_0002224> . #ObjectProperty
@prefix ends_with: <http://purl.obolibrary.org/obo/RO_0002230> . #ObjectProperty
@prefix simultaneous_with: <http://purl.obolibrary.org/obo/RO_0002082> . #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