Usage patterns in ontology development and formal knowledge representation
In ontology development and usage, usage patterns address recurring modeling requirements by providing standardized, reusable semantic snippets. These patterns ensure consistent representation of relationships between instances and entities across knowledge graphs. In OWL ontologies, modeling choices are expressed through axioms, which define the structure and constraints of the domain. However, the open world assumption makes it difficult to enforce completeness checks on knowledge graphs using ontology reasoners alone. This is where SHACL shapes become essential: they enable validation of knowledge graphs by checking data against defined structural and completeness requirements.
By adopting usage patterns and supporting them with SHACL validation, ontology developers and users can ensure:
- Uniformity and consistency across models
- Clarity in semantic representation
- Reusability of proven solutions
- Verifiable completeness and data quality of knowledge graphs
Each pattern section below includes its purpose, description, relevant properties, visualization, and examples. Together with corresponding SHACL shapes, these patterns provide both semantic guidance and validation mechanisms for reliable knowledge representation.
Section 1: The steel ingot story
To illustrate how usage patterns apply in practice, we follow a single ingot of steel through a part of its life: from casting through rolling to a measurement on a product (a slab) that has been produced from the ingot. We start with the philosophical duality statue/clay problem, demonstrates how the material entities persists or vanish through transformations of form, composition, and properties. By observing the entites at each stage, we see how patterns address recurring modeling challenges: object identity, temporal change, process chains, and measurement contexts.
Pattern 1 - Duality of object and material
- Purpose: Represents how objects and portions of matter are the same material entity, like a statue that is at the same time a portion of clay.
- Example Use Case: The example describes an entity that is a material (steel, subsubclass of portion of matter) and at the same time an object (ingot). This duality reflects how different observers see different things in the same material entity. As a material the entity has the qualities of a material, namely the chemical composition. As an ingot it has the quality of an object, namely its mass.
Note: types of qualities may be different depending onto whom they belong: objects have extensive qualities (subclass of quality), which scale with the size of the object while portions of matter have intensive qualities (subclass of quality) that are independent of the portions size.
📄 View pattern code
@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 rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix pattern: <https://w3id.org/pmd/co/pattern/duality_object_material/> .
@prefix : <https://w3id.org/pmd/co/pattern/duality_object_material/> .
@base <https://w3id.org/pmd/co/pattern/duality_object_material/> .
# material entity types
@prefix ingot: <https://w3id.org/pmd/co/PMD_0020170> .
@prefix portion_of_steel: <https://w3id.org/pmd/co/PMD_0020096> .
# quality types
@prefix mass: <https://w3id.org/pmd/co/PMD_0020133> .
@prefix chemical_composition: <https://w3id.org/pmd/co/PMD_0000551> .
# properties
@prefix has_quality: <http://purl.obolibrary.org/obo/RO_0000086> .
@prefix has_part: <http://purl.obolibrary.org/obo/BFO_0000051> .
ex:my_dual_ingot_and_portion_of_steel a ingot: , portion_of_steel: ;
has_quality: ex:my_ingots_mass, ex:my_steels_composition ;
has_part: ex:some_portion_of_iron .
ex:my_ingots_mass a mass: .
ex:my_steels_composition a chemical_composition: .
(see folder: patterns/duality object material/ )
Pattern 2a - Temporal dimensions of a process ...
- Purpose: Specify the temporal extend and the temporal boundaries of a process on the time axis.
- Example Use Case: This example describes a process (annealing of an ingot) that unfolds in a single uninterrupted time interval. The time interval has explicit named start and end instants. Furthermore the process has two specified participants: the furnace and the ingot.
📄 View pattern code
@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 object: <http://purl.obolibrary.org/obo/BFO_0000030> .
@prefix ingot: <https://w3id.org/pmd/co/PMD_0020170> .
@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 temporal_interval: <http://purl.obolibrary.org/obo/BFO_0000202> .
@prefix temporal_instant: <http://purl.obolibrary.org/obo/BFO_0000203> .
@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 temporal_part_of: <http://purl.obolibrary.org/obo/BFO_0000139> .
@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
@prefix participates_in: <http://purl.obolibrary.org/obo/RO_0000056> .
<https://w3id.org/pmd/co/test/shape/temporal_region> rdf:type owl:Ontology .
ex:the_ingots_annealing_process a process: .
ex:temp_intvl_of_the_ingots_annealing a temporal_interval: .
ex:the_furnace a object: .
ex:the_dual_ingot_and_portion_of_steel a ingot: .
ex:annealing_start a temporal_instant: .
ex:annealing_end a temporal_instant: .
ex:the_ingots_annealing_process occupies_temporal_region: ex:temp_intvl_of_the_ingots_annealing .
ex:temp_intvl_of_the_ingots_annealing has_first_instant: ex:annealing_start .
ex:temp_intvl_of_the_ingots_annealing has_last_instant: ex:annealing_end .
ex:the_furnace participates_in: ex:the_ingots_annealing_process .
ex:the_dual_ingot_and_portion_of_steel participates_in: ex:the_ingots_annealing_process .
(see folder: patterns/temporal region/ )
Pattern 2b - ... and the participant objects states
- Purpose: Describe an entities state at different points in time while the identity of the entity remains.
- Example Use Case: This example is a continuation of the previous one. Now we look at the different microstructures before and after annealing. Typically after casting high alloy steel from a blast furnace the alloying element concentration in an ingot is non-homogenious along its length. The inhomogenity can be expressed with the seggretation factor which expresses the (min/max local) deviation from the average concentration. We express this deviation here as qualities of the microstructure, which in our model is considered a different microstructure before and after annealing due to the difference in seggregation. Note: for visibility the relation of the microstructures to their temporal intervals of existance have been omitted.
📄 View pattern code
@prefix mo: <http://purl.org/ontology/mo/> .
@prefix si: <https://si-digital-framework.org/SI#> .
@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#> .
<https://w3id.org/pmd/co/test/shape/change_of_quality_with_tqc> rdf:type owl:Ontology .
@prefix man_process: <https://w3id.org/pmd/co/PMD_0000833> .
@prefix independent_continuant: <http://purl.obolibrary.org/obo/BFO_0000004> .
@prefix object: <http://purl.obolibrary.org/obo/BFO_0000030> .
@prefix temporally_qualified_continuant: <https://w3id.org/pmd/co/PMD_0000068> .
@prefix exists_at: <http://purl.obolibrary.org/obo/BFO_0000108> .
@prefix temporal_region: <http://purl.obolibrary.org/obo/BFO_0000008> .
@prefix mass: <https://w3id.org/pmd/co/PMD_0020133> .
@prefix size: <https://w3id.org/pmd/co/PMD_0020132> .
@prefix quality: <http://purl.obolibrary.org/obo/BFO_0000019> .
@prefix density: <https://w3id.org/pmd/co/PMD_0000597> .
@prefix has_quality: <http://purl.obolibrary.org/obo/RO_0000086> .
@prefix material: <https://w3id.org/pmd/co/PMD_0000000> .
@prefix statue: <http://example.org/statue> .
@prefix has_state: <https://w3id.org/pmd/co/PMD_0000069> .
@prefix is_state_of: <https://w3id.org/pmd/co/PMD_0000070> .
@prefix has_input: <http://purl.obolibrary.org/obo/RO_0002233> .
@prefix has_output: <http://purl.obolibrary.org/obo/RO_0002234> .
@prefix precedes: <http://purl.obolibrary.org/obo/BFO_0000063> .
@prefix length: <https://w3id.org/pmd/co/PMD_0040001> .
@prefix ingot: <https://w3id.org/pmd/co/PMD_0020170> .
@prefix microstructure: <https://w3id.org/pmd/co/PMD_0000857> .
# specific quality for this example
ex:cls_segregation_factor rdfs:subClassOf quality: .
# Define Object (Anchor)
ex:the_dual_ingot_and_microstructure a ingot: .
# ...and its variable states:
ex:the_microstructure_before_annealing a microstructure: ,
temporally_qualified_continuant: .
ex:the_microstructure_after_annealing a microstructure: ,
temporally_qualified_continuant: .
# Describe the states with their individual qualites
ex:segregation_factor_before_annealing a ex:cls_segregation_factor .
ex:segregation_factor_after_annealing a ex:cls_segregation_factor .
ex:the_microstructure_before_annealing
is_state_of: ex:the_dual_ingot_and_microstructure ;
has_quality: ex:segregation_factor_before_annealing ;
exists_at: [
a temporal_region:
] .
ex:the_microstructure_after_annealing
is_state_of: ex:the_dual_ingot_and_microstructure ;
has_quality: ex:segregation_factor_after_annealing ;
exists_at: [
a temporal_region:
] .
# Link the states to their anchor and vice versa
ex:the_dual_ingot_and_microstructure
has_state: ex:the_microstructure_before_annealing ,
ex:the_microstructure_after_annealing .
(see folder: patterns/TQC microstructure of ingot/ )
Pattern 3 - A process with a chain of subprocesses
Purpose: Represent processes, consisting of simultaneous and serial subprocesses.
Example Use Case: This example describes a hot rolling process that consists of a number of subprocesses (heating, one rolling pass, cooling) that are proper occurent part of the superordinate hot rolling process. The hot rolling process has distinct first (ro:starts with) and last (ro:ends with) subprocesses and the subprocesses precede each other in the specified order.
The hot rolling process has a specified input of an ingot which ceases to exist during the process and a specified output of a strand (a very long hot rolled object) which starts to exist during the process.
Notes:
- What is not being said but could be expressed in addition: the ingots bfo:history process ends with the hot rolling process while the strands bfo:history starts with the hot rolling process.
- We have no proper class available for the strand, so we use the next best up the class hierarchy which is bfo:object.
📄 View pattern code
@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 object: <http://purl.obolibrary.org/obo/BFO_0000030> .
@prefix ingot: <https://w3id.org/pmd/co/PMD_0020170> .
@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
@prefix has_occurrent_part: <http://purl.obolibrary.org/obo/BFO_0000117> .
@prefix has_proper_occurrent_part: <http://purl.obolibrary.org/obo/BFO_0000118> .
@prefix has_specified_input: <http://purl.obolibrary.org/obo/OBI_0000293> .
@prefix has_specified_output: <http://purl.obolibrary.org/obo/OBI_0000299> .
@prefix directive_information_entity: <http://purl.obolibrary.org/obo/IAO_0000033> .
@prefix realizes: <http://purl.obolibrary.org/obo/BFO_0000055> .
@prefix plan: <http://purl.obolibrary.org/obo/OBI_0000260> .
@prefix concretizes: <http://purl.obolibrary.org/obo/RO_0000059> .
@prefix is_subject_of: <https://w3id.org/pmd/co/PMD_0000004> .
<https://w3id.org/pmd/co/test/shape/process_chain> rdf:type owl:Ontology .
ex:the_dual_ingot_and_portion_of_steel a ingot: .
ex:the_strand a object: .
ex:hot_rolling a process: .
ex:hot_rolling has_specified_input: ex:the_dual_ingot_and_portion_of_steel .
ex:hot_rolling has_specified_output: ex:the_strand .
ex:heating a process: .
ex:rolling_pass a process: .
ex:deformation a process: .
ex:cooling a process: .
ex:rolling_specs a directive_information_entity: .
ex:hot_rolling realizes: [
a plan: ;
concretizes: ex:rolling_specs
] ;
is_subject_of: ex:rolling_specs ;
starts_with: ex:heating ;
ends_with: ex:cooling ;
has_proper_occurrent_part: ex:heating,
ex:rolling_pass, ex:cooling .
ex:heating precedes: ex:rolling_pass .
ex:rolling_pass precedes: ex:cooling .
ex:rolling_pass simultaneous_with: ex:deformation .
(see folder: patterns/process chain/ )
Pattern 4 - A manufacturing process with its input and outputs
Purpose: Describes the primary inputs and outputs of a process.
Example Use Case: This example is a continuation of the hot rolling above. After the hot rolling of the ingot, we had obtained a strand. This strand now goes into into a cutting process where it is consumed and where multiple slabs which are output of the cutting process start to exist. The cutting is not performed ad hoc but follows a plan which in turn is based on a plan specification (-document), which may specify dimensions. The cutting does not alter the material, at some level of granularity the strand as well as in both slabs are a state of the material. This is again expressed using TQCs, where the strand and the slabs are temporal occurences of the same material. It is a somewhat inverse situation to the pattern 2b, where one object had different instances of microstructures over time.
Note:
- we do not consider "non-primary" inputs which could be e.g. electrical energy nor non primary outputs which could be e.g. crop ends cut from the strand. These "non-primaries" could be connected to the process using has input and has output.
📄 View pattern code
@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 sawing: <https://w3id.org/pmd/co/PMD_0000822> .
@prefix temporally_qualified_continuant: <https://w3id.org/pmd/co/PMD_0000068> .
@prefix is_state_of: <https://w3id.org/pmd/co/PMD_0000070> .
@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> .
@prefix material: <https://w3id.org/pmd/co/PMD_0000000> .
@prefix plan: <http://purl.obolibrary.org/obo/OBI_0000260> .
@prefix realizes: <http://purl.obolibrary.org/obo/BFO_0000055> .
@prefix concretizes: <http://purl.obolibrary.org/obo/RO_0000059> .
@prefix slab: <https://w3id.org/pmd/co/PMD_0020176> .
@prefix plan_specification: <http://purl.obolibrary.org/obo/IAO_0000104> .
@prefix is_specified_input_of: <http://purl.obolibrary.org/obo/OBI_0000295> .
@prefix temporal_interval: <http://purl.obolibrary.org/obo/BFO_0000202> .
@prefix directive_information_entity: <http://purl.obolibrary.org/obo/IAO_0000033> .
@prefix is_subject_of: <https://w3id.org/pmd/co/PMD_0000004> .
@prefix has_part: <http://purl.obolibrary.org/obo/BFO_0000051> .
@prefix exists_at: <http://purl.obolibrary.org/obo/BFO_0000108> .
@prefix has_quality: <http://purl.obolibrary.org/obo/RO_0000086> .
@prefix length: <https://w3id.org/pmd/co/PMD_0040001> .
<https://w3id.org/pmd/co/test> rdf:type owl:Ontology .
# the anchor
ex:the_material a material: .
# the temporal regions (autoshape requirement)
ex:intvl_before_cropping a temporal_interval: .
ex:intvl_after_cropping a temporal_interval: .
# The participants (and states)
ex:the_strand a object: ,
temporally_qualified_continuant: ;
is_subject_of: ex:the_cropping_plan_specification ; # autoshape requirement of the plan specification
is_state_of: ex:the_material ;
exists_at: ex:intvl_before_cropping .
ex:slab_1 a slab: ,
temporally_qualified_continuant: ;
is_state_of: ex:the_material ;
exists_at: ex:intvl_after_cropping ;
has_quality: ex:slab_1_length .
ex:slab_1_length a length: ;
is_subject_of: ex:the_slabs_length_requirement .
# ex:slab_2 a slab: ,
# temporally_qualified_continuant: ;
# is_state_of: ex:the_material ;
# exists_at: ex:intvl_after_cropping ;
# has_quality: [
# a length: ;
# is_subject_of: ex:the_slabs_length_requirement
# ] .
ex:slab_2 a slab: ,
temporally_qualified_continuant: ;
is_state_of: ex:the_material ;
exists_at: ex:intvl_after_cropping ;
has_quality: ex:slab_2_length .
ex:slab_2_length a length: ;
is_subject_of: ex:the_slabs_length_requirement .
# the intentions
ex:the_cropping_plan_specification a plan_specification: ;
has_part: ex:the_slabs_length_requirement .
ex:the_slabs_length_requirement a directive_information_entity: .
ex:the_cropping_plan a plan: ;
concretizes: ex:the_cropping_plan_specification .
# the process
ex:cropping a sawing: ;
has_specified_input: ex:the_strand ;
has_specified_output: ex:slab_1 ,
ex:slab_2 ;
realizes: ex:the_cropping_plan .
(see folder: patterns/input and output of processes/ )
Pattern 5 - Realization of a role
- Purpose: Represent characteristics of the objects, brought to existence by a specific situation. E.g. a role, which is realized in a process.
- Example Use Case: This example is a continuation of the cutting/cropping above. After the cropping in the last example we had obtained multiple slabs which were the result of a subclass of a manufacturing process. A manufacturing processes characteristic is to have objects or object aggregates as specified input and as specified output. Now we look at an assay. The characteristic of an assay is to have a material entity which bears an evaluant role as specified input and to have some 'data item' which are about this material entity as specified output. Also, the assay has an 'assay measures characteristic' relation to the property of the evaluant that it measures.
📄 View pattern code
@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 material: <https://w3id.org/pmd/co/PMD_0000000> .
@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 indentation_hardness: <https://w3id.org/pmd/co/PMD_0000789> .
@prefix planned_process: <http://purl.obolibrary.org/obo/COB_0000035> .
@prefix assay: <http://purl.obolibrary.org/obo/OBI_0000070> .
@prefix tensile_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> .
@prefix assay_measures_characteristic: <http://purl.obolibrary.org/obo/RO_0009006> .
@prefix has_occurrent_part: <http://purl.obolibrary.org/obo/BFO_0000117> .
@prefix realizes: <http://purl.obolibrary.org/obo/BFO_0000055> .
@prefix measurement_datum: <http://purl.obolibrary.org/obo/IAO_0000109> .
@prefix plan: <http://purl.obolibrary.org/obo/OBI_0000260> .
@prefix plan_specification: <http://purl.obolibrary.org/obo/IAO_0000104> .
@prefix has_part: <http://purl.obolibrary.org/obo/BFO_0000051> .
@prefix has_some_value_spec: <http://purl.obolibrary.org/obo/OBI_0001938> .
@prefix concretizes: <http://purl.obolibrary.org/obo/RO_0000059> .
@prefix slab: <https://w3id.org/pmd/co/PMD_0020176> .
@prefix characteristic_of: <http://purl.obolibrary.org/obo/RO_0000052> .
@prefix objective_specification: <http://purl.obolibrary.org/obo/IAO_0000005> .
@prefix is_subject_of: <https://w3id.org/pmd/co/PMD_0000004> .
@prefix has_value_specification: <http://purl.obolibrary.org/obo/OBI_0001938> .
@prefix value_specification: <http://purl.obolibrary.org/obo/OBI_0001933> .
<https://w3id.org/pmd/co/test/role> rdf:type owl:Ontology .
# SDCs
ex:the_materials_hardness a indentation_hardness: ;
is_subject_of: ex:vickers_specification_datum ;
has_realization: ex:the_vickers_test ;
characteristic_of: ex:the_slab_and_material .
ex:evaluant_role_of_slab a evaluant_role: ;
has_realization: ex:the_vickers_test ;
characteristic_of: ex:the_slab_and_material .
# objects
ex:the_slab_and_material a slab: , material: .
# GDCs
ex:the_vickers_measurement_datum a measurement_datum: ;
has_value_specification: ex:the_vickers_svs .
ex:the_vickers_svs a value_specification: . # HERMIT reasoner shortcomming: if the_vickers_svs was a BNode, the autoshape-required superpoperty has_part would not be inferred.
ex:the_vickers_test_standard a plan_specification: ;
has_part: ex:vickers_specification_datum .
# process
ex:the_vickers_test a assay: ;
has_specified_input: ex:the_slab_and_material ;
has_specified_output: ex:the_vickers_measurement_datum ;
assay_measures_characteristic: ex:the_materials_hardness ;
realizes: [
a plan: ;
concretizes: ex:the_vickers_test_standard
] ,
ex:evaluant_role_of_slab ;
is_subject_of: ex:the_vickers_test_standard ;
achieves_planned_objective: [
a objective_specification: ;
is_about: [] # I will have to think about what the objective of the assay is. This is a requirement from the autoshape.
] .
(see folder: patterns/realizable entity (role)/ )
Section 2: FAP (frequently applied patterns)
Some facts are frequently expressed in the domain of MSE. The propably most frequent statement type is one about the properties of a material. From the ontological point of view there are different types of propreties, which are presented in pattern 6. Another frequent situation is to talk about values that result from a measurements and to talk about values that we consider as specifications, like setpoints. This is addressed in pattern 7. If the values a scalar physical quanitities with magnitude and physical unit, we can express the using pattern 8.
Pattern 6 - Different types of material properties
Purpose: Represent materials, their structure and their (behavioral) properties
Example Use Case: We split this example into three parts:
- first we talk about "fundamental" properties of a material or an object. We call these properties fundamental because they are always present. For a portion of matter, such a fundamental property would be its density. For an object, the correlated fundamental properties would be its volume and its mass. (Remember: if we zoom into a different level of granularity where we dont look at the portion of matter anymore but lets say on a bunch of molecules, these molecules would be perceived as objects and every object would have volume and mass.)
- second we talk about "behavoiral" material properties. We call these properties behavioral because they are a manifestation of the materials behavior in a specific circumstance or process. Such a behavioral material property of (a solid) material would be the stress at which it starts straining irreversably (due to some inelastic rearrangement in its structure). For an object, the correlated property would be the force at which it starts deforming irreversably.
- third we talk about relational properties that we encounter in portions and objects. Portions may have other portions as parts, e.g. a portion of high alloy steel may have a portion of chromium as part. A relational property (beyond the qualitative parthood) between these two portions is that the portion of chromium (which forms a part) has a mass/volume/molar proportion relation to the portion of high alloy steel (which forms the whole). For two objects, a relational property could express the mechanical force excerted from one to the other.
fundamental property
behavoiral property
relational property
📄 View pattern code
@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#> .
<https://w3id.org/pmd/co/test/shape/qualities_and_properties> rdf:type owl:Ontology .
### Define prefixes ###
# Classes
@prefix entity: <http://purl.obolibrary.org/obo/BFO_0000001> .
@prefix independent_continuant: <http://purl.obolibrary.org/obo/BFO_0000004> .
@prefix material_entity: <http://purl.obolibrary.org/obo/BFO_0000040> .
@prefix object: <http://purl.obolibrary.org/obo/BFO_0000030> .
@prefix temporally_qualified_continuant: <https://w3id.org/pmd/co/PMD_0000068> .
@prefix portion_of_iron: <https://w3id.org/pmd/co/PMD_0020026> .
@prefix material: <https://w3id.org/pmd/co/PMD_0000000> .
@prefix temporal_region: <http://purl.obolibrary.org/obo/BFO_0000008> .
@prefix quality: <http://purl.obolibrary.org/obo/BFO_0000019> .
@prefix mass: <https://w3id.org/pmd/co/PMD_0020133> .
@prefix density: <https://w3id.org/pmd/co/PMD_0000597> .
@prefix behavioral_material_property: <https://w3id.org/pmd/co/PMD_0000005> .
@prefix specifically_dependent_continuant: <http://purl.obolibrary.org/obo/BFO_0000020> .
@prefix melting_point: <https://w3id.org/pmd/co/PMD_0000851> .
@prefix relational_quality: <http://purl.obolibrary.org/obo/BFO_0000145> .
@prefix mass_proportion: <https://w3id.org/pmd/co/PMD_0020102> .
@prefix scalar_value_specification: <http://purl.obolibrary.org/obo/OBI_0001931> .
@prefix fraction_value_specification: <https://w3id.org/pmd/co/PMD_0025997> .
@prefix gram: <http://purl.obolibrary.org/obo/UO_0000021> .
@prefix gram_per_cubic_centimetre: <http://purl.obolibrary.org/obo/UO_0000084> .
@prefix degree_celsius: <http://purl.obolibrary.org/obo/UO_0000027> .
@prefix mass_percentage: <http://purl.obolibrary.org/obo/UO_0000163> .
@prefix melting_process: <https://w3id.org/pmd/co/PMD_0000053> .
@prefix application_of_heat_flux: <https://w3id.org/pmd/co/PMD_0000520> .
@prefix stimulating_process: <https://w3id.org/pmd/co/PMD_0000950> .
@prefix process: <http://purl.obolibrary.org/obo/BFO_0000015> .
@prefix change_of_temperature: <https://w3id.org/pmd/co/PMD_0000549> .
# Object properties
@prefix exists_at: <http://purl.obolibrary.org/obo/BFO_0000108> .
@prefix is_state_of: <https://w3id.org/pmd/co/PMD_0000070> .
@prefix quality_of: <http://purl.obolibrary.org/obo/RO_0000080> .
@prefix characteristic_of: <http://purl.obolibrary.org/obo/RO_0000052> .
@prefix relational_quality_of: <https://w3id.org/pmd/co/PMD_0025999> .
@prefix has_specified_numeric_value: <http://purl.obolibrary.org/obo/OBI_0001937> .
@prefix has_measurement_unit_label: <http://purl.obolibrary.org/obo/IAO_0000039> .
@prefix specifies_value_of: <http://purl.obolibrary.org/obo/OBI_0001927> .
@prefix has_realization: <http://purl.obolibrary.org/obo/BFO_0000054> .
@prefix participates_in: <http://purl.obolibrary.org/obo/RO_0000056> .
@prefix has_participant: <http://purl.obolibrary.org/obo/RO_0000057> .
@prefix stimulated_by: <http://purl.obolibrary.org/obo/BFO_0000054> .
@prefix responds_with: <https://w3id.org/pmd/co/PMD_0001029> .
@prefix has_specified_input: <http://purl.obolibrary.org/obo/OBI_0000293> .
@prefix has_specified_output: <http://purl.obolibrary.org/obo/OBI_0000299> .
@prefix specified_by_value: <https://w3id.org/pmd/co/PMD_0000077> .
### Instances ###
# Quality example
ex:metal_sheet a object: .
ex:mass_metal_sheet a mass: ;
quality_of: ex:metal_sheet .
ex:svs_15_g a scalar_value_specification: ;
has_specified_numeric_value: "3.3"^^xsd:float ;
has_measurement_unit_label: gram: ;
specifies_value_of: ex:mass_metal_sheet .
ex:tcq_temporal_region a temporal_region: .
ex:tqc_steel_material a material: , temporally_qualified_continuant: ;
exists_at: ex:tcq_temporal_region ;
is_state_of: ex:steel_material .
ex:density_steel a density: ;
quality_of: ex:tqc_steel_material .
ex:svs_7_5_g_per_cm a scalar_value_specification: ;
has_specified_numeric_value: "7.5"^^xsd:float ;
has_measurement_unit_label: gram_per_cubic_centimetre: ;
specifies_value_of: ex:density_steel .
# Behavioral material property
ex:steel_material a material: ;
participates_in: ex:melting_process .
ex:svs_1500_deg_c a scalar_value_specification: ;
has_specified_numeric_value: "1500"^^xsd:float ;
has_measurement_unit_label: degree_celsius: ;
specifies_value_of: ex:melting_temperature_steel .
ex:melting_temperature_steel a melting_point: ;
characteristic_of: ex:steel_material ;
has_realization: ex:melting_process ;
stimulated_by: ex:application_of_heat_flux ;
responds_with: ex:change_of_temperature_during_melting .
ex:melting_process a melting_process: ;
has_specified_output: ex:steel_material ;
has_specified_input: ex:steel_material .
ex:application_of_heat_flux a application_of_heat_flux: .
ex:change_of_temperature_during_melting a change_of_temperature: .
# Relational quality
ex:some_iron a portion_of_iron: .
ex:mass_proportion_iron a mass_proportion: ;
relational_quality_of: ex:some_iron , ex:metal_sheet .
ex:fraction_iron a fraction_value_specification: ;
has_specified_numeric_value: "97.7"^^xsd:float ;
has_measurement_unit_label: mass_percentage: ;
specifies_value_of: ex:mass_proportion_iron .
(see folder: patterns/material property (quality)/ )
Pattern 7 - Measurement and setpoint.
Purpose: Represent different aspects of a measured or a required value of some material property
Example Use Case: The first part of the example builds on "pattern 5 - realizable entities and the measurand role realized in an assay". The measurand role is ommitted for clarity in this example and the focus is on the different relations between the measurand and the measurement result. First thing is that we have an assay ex:the_vickers_test that has an object (ex:the_slab_and_material) as specified input and a data item (ex:the_vickers_test_result) as specified output. The ex:the_vickers_test_result has a part - a very specific part denoted by has_value_specification - that represents the physical quanity of the measurement result with a magnitude of 245 and an unit of HV5. This physical quantity also points to the material property that it is about with the relation specifies_value_of. In addtion, the assay relates to the property of ex:the_slab_and_material that it measures using is_quality_measurement_of and the assay also relates in a weak manner to its measurand using is_about.
Additionally we added a realtion stating which directive information entity was concretized by realizing (executing) the plan of the assay: an entity with the label "ISO 6507".
The second part of the example specifies a requirement or a setpoint for the value of a property. It is not a lower or upper limit for this requirement (not yet modelled) but a target value. The pattern is very similar to the measurement, with the difference that the subject of the scalar value specification is not a measument datum but a specification datum and that the quality/SDC in question concretizes the specification datum instead of iao:is quality measured as for measurements.
📄 View pattern code
@prefix : <https://w3id.org/pmd/co/test/shape3/> .
@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/shape3#> .
@prefix ex: <http://www.example.org#> .
@prefix assay: <http://purl.obolibrary.org/obo/OBI_0000070> .
@prefix realizes: <http://purl.obolibrary.org/obo/BFO_0000055> .
@prefix has_specified_input: <http://purl.obolibrary.org/obo/OBI_0000293> .
@prefix has_specified_output: <http://purl.obolibrary.org/obo/OBI_0000299> .
@prefix evaluant_role: <http://purl.obolibrary.org/obo/OBI_0000067> .
@prefix realized_in: <http://purl.obolibrary.org/obo/BFO_0000054> .
@prefix quality: <http://purl.obolibrary.org/obo/BFO_0000019> .
@prefix quality_is_specified_as: <http://purl.obolibrary.org/obo/IAO_0000419> .
@prefix material_entity: <http://purl.obolibrary.org/obo/BFO_0000040> .
@prefix has_quality: <http://purl.obolibrary.org/obo/RO_0000086> .
@prefix has_measurement_unit_label: <http://purl.obolibrary.org/obo/IAO_0000039> .
@prefix centimeter: <http://purl.obolibrary.org/obo/UO_0000015> .
@prefix is_about: <http://purl.obolibrary.org/obo/IAO_0000136> .
@prefix specifies_value_of: <http://purl.obolibrary.org/obo/OBI_0001927> .
@prefix has_specified_numeric_value: <http://purl.obolibrary.org/obo/OBI_0001937> .
@prefix measurement_datum: <http://purl.obolibrary.org/obo/IAO_0000109> .
@prefix is_quality_measurement_of: <http://purl.obolibrary.org/obo/IAO_0000221> .
@prefix has_value_specification: <http://purl.obolibrary.org/obo/OBI_0001938> .
@prefix has_part: <http://purl.obolibrary.org/obo/BFO_0000051> .
@prefix achieves_planned_objective: <http://purl.obolibrary.org/obo/OBI_0000417> .
@prefix has_measurement_value: <http://purl.obolibrary.org/obo/IAO_0000004> .
@prefix assay_measures_characteristic: <http://purl.obolibrary.org/obo/RO_0009006> .
@prefix object: <http://purl.obolibrary.org/obo/BFO_0000030> .
@prefix material: <https://w3id.org/pmd/co/PMD_0000000> .
@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 indentation_hardness: <https://w3id.org/pmd/co/PMD_0000789> .
@prefix planned_process: <http://purl.obolibrary.org/obo/COB_0000035> .
@prefix tensile_testing_process: <https://w3id.org/pmd/co/PMD_0000638> .
@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> .
@prefix assay_measures_characteristic: <http://purl.obolibrary.org/obo/RO_0009006> .
@prefix has_occurrent_part: <http://purl.obolibrary.org/obo/BFO_0000117> .
@prefix measurement_datum: <http://purl.obolibrary.org/obo/IAO_0000109> .
@prefix plan: <http://purl.obolibrary.org/obo/OBI_0000260> .
@prefix plan_specification: <http://purl.obolibrary.org/obo/IAO_0000104> .
@prefix has_part: <http://purl.obolibrary.org/obo/BFO_0000051> .
@prefix has_some_value_spec: <http://purl.obolibrary.org/obo/OBI_0001938> .
@prefix concretizes: <http://purl.obolibrary.org/obo/RO_0000059> .
@prefix slab: <https://w3id.org/pmd/co/PMD_0020176> .
@prefix scalar_value_specification: <http://purl.obolibrary.org/obo/OBI_0001931> .
@prefix vickers_hardness_hv5_iso6507: <https://w3id.org/pmd/co/PMD_0000789> .
@prefix hv5_unit: <https://w3id.org/pmd/vto/HV5> .
@prefix directive_information_entity: <http://purl.obolibrary.org/obo/IAO_0000033> .
@prefix label: <http://www.w3.org/2000/01/rdf-schema#label> .
@prefix has_characteristic: <http://purl.obolibrary.org/obo/RO_0000053> .
@prefix objective_specification: <http://purl.obolibrary.org/obo/IAO_0000005> .
@prefix is_subject_of: <https://w3id.org/pmd/co/PMD_0000004> .
<https://w3id.org/pmd/co/test/shape3> rdf:type owl:Ontology .
# SDCs
ex:the_materials_hv5_hardness a vickers_hardness_hv5_iso6507: ;
realized_in: ex:the_vickers_test .
ex:the_evaluant_role_in_the_hv5_test a evaluant_role: .
# objects
ex:the_slab_and_material a slab: , material: ;
has_characteristic: ex:the_materials_hv5_hardness ;
has_role: ex:the_evaluant_role_in_the_hv5_test .
# GDCs
ex:the_vickers_test_result a measurement_datum: ;
has_value_specification: [
a scalar_value_specification: ;
has_specified_numeric_value: "245"^^xsd:float ;
has_measurement_unit_label: hv5_unit: ;
specifies_value_of: ex:the_materials_hv5_hardness
] ;
is_quality_measurement_of: ex:the_materials_hv5_hardness ;
is_about: ex:the_slab_and_material .
ex:iso_6507 a directive_information_entity: ;
label: "ISO 6507" .
# process
ex:the_vickers_test a assay: ;
has_specified_input: ex:the_slab_and_material ;
has_specified_output: ex:the_vickers_test_result ;
assay_measures_characteristic: ex:the_materials_hv5_hardness ;
realizes: [
a plan: ;
concretizes: ex:iso_6507
] ,
ex:the_evaluant_role_in_the_hv5_test ;
achieves_planned_objective: [
a objective_specification: ;
is_about: ex:the_vickers_test_result
] ;
is_subject_of: ex:iso_6507 .
📄 View pattern code
@prefix : <https://w3id.org/pmd/co/test/shape3/> .
@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/shape3#> .
@prefix ex: <http://www.example.org#> .
@prefix assay: <http://purl.obolibrary.org/obo/OBI_0000070> .
@prefix realizes: <http://purl.obolibrary.org/obo/BFO_0000055> .
@prefix has_specified_input: <http://purl.obolibrary.org/obo/OBI_0000293> .
@prefix has_specified_output: <http://purl.obolibrary.org/obo/OBI_0000299> .
@prefix evaluant_role: <http://purl.obolibrary.org/obo/OBI_0000067> .
@prefix realized_in: <http://purl.obolibrary.org/obo/BFO_0000054> .
@prefix quality: <http://purl.obolibrary.org/obo/BFO_0000019> .
@prefix quality_is_specified_as: <http://purl.obolibrary.org/obo/IAO_0000419> .
@prefix material_entity: <http://purl.obolibrary.org/obo/BFO_0000040> .
@prefix has_quality: <http://purl.obolibrary.org/obo/RO_0000086> .
@prefix has_role: <http://purl.obolibrary.org/obo/RO_0000087> .
@prefix has_measurement_unit_label: <http://purl.obolibrary.org/obo/IAO_0000039> .
@prefix centimeter: <http://purl.obolibrary.org/obo/UO_0000015> .
@prefix is_about: <http://purl.obolibrary.org/obo/IAO_0000136> .
@prefix specifies_value_of: <http://purl.obolibrary.org/obo/OBI_0001927> .
@prefix has_specified_numeric_value: <http://purl.obolibrary.org/obo/OBI_0001937> .
@prefix measurement_datum: <http://purl.obolibrary.org/obo/IAO_0000109> .
@prefix is_quality_measurement_of: <http://purl.obolibrary.org/obo/IAO_0000221> .
@prefix has_value_specification: <http://purl.obolibrary.org/obo/OBI_0001938> .
@prefix has_part: <http://purl.obolibrary.org/obo/BFO_0000051> .
@prefix achieves_planned_objective: <http://purl.obolibrary.org/obo/OBI_0000417> .
@prefix has_measurement_value: <http://purl.obolibrary.org/obo/IAO_0000004> .
@prefix assay_measures_characteristic: <http://purl.obolibrary.org/obo/RO_0009006> .
@prefix object: <http://purl.obolibrary.org/obo/BFO_0000030> .
@prefix material: <https://w3id.org/pmd/co/PMD_0000000> .
@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 indentation_hardness: <https://w3id.org/pmd/co/PMD_0000789> .
@prefix planned_process: <http://purl.obolibrary.org/obo/COB_0000035> .
@prefix assay: <http://purl.obolibrary.org/obo/OBI_0000070> .
@prefix tensile_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> .
@prefix assay_measures_characteristic: <http://purl.obolibrary.org/obo/RO_0009006> .
@prefix has_occurrent_part: <http://purl.obolibrary.org/obo/BFO_0000117> .
@prefix realizes: <http://purl.obolibrary.org/obo/BFO_0000055> .
@prefix measurement_datum: <http://purl.obolibrary.org/obo/IAO_0000109> .
@prefix specification_datum: <https://w3id.org/pmd/co/PMD_0060009> .
@prefix plan: <http://purl.obolibrary.org/obo/OBI_0000260> .
@prefix plan_specification: <http://purl.obolibrary.org/obo/IAO_0000104> .
@prefix has_part: <http://purl.obolibrary.org/obo/BFO_0000051> .
@prefix has_some_value_spec: <http://purl.obolibrary.org/obo/OBI_0001938> .
@prefix concretizes: <http://purl.obolibrary.org/obo/RO_0000059> .
@prefix slab: <https://w3id.org/pmd/co/PMD_0020176> .
@prefix scalar_value_specification: <http://purl.obolibrary.org/obo/OBI_0001931> .
@prefix vickers_hardness_hv5_iso6507: <https://w3id.org/pmd/vto/VTO_0000002> .
@prefix hv5_unit: <https://w3id.org/pmd/vto/HV5> .
@prefix directive_information_entity: <http://purl.obolibrary.org/obo/IAO_0000033> .
@prefix label: <http://www.w3.org/2000/01/rdf-schema#label> .
@prefix has_characteristic: <http://purl.obolibrary.org/obo/RO_0000053> .
@prefix is_concretized_as: <http://purl.obolibrary.org/obo/RO_0000058> .
@prefix is_subject_of: <https://w3id.org/pmd/co/PMD_0000004> .
<https://w3id.org/pmd/co/test/shape3> rdf:type owl:Ontology .
# SDCs
ex:the_materials_hv5_hardness a vickers_hardness_hv5_iso6507: ;
is_subject_of: ex:the_materials_hardness_specification .
# objects
ex:the_slab_and_material a slab: , material: ;
has_characteristic: ex:the_materials_hv5_hardness ;
is_subject_of: ex:EN_10088 .
# GDCs
ex:the_materials_hardness_specification a specification_datum: ;
has_value_specification: [
a scalar_value_specification: ;
has_specified_numeric_value: "210"^^xsd:float ;
has_measurement_unit_label: hv5_unit: ;
specifies_value_of: ex:the_materials_hv5_hardness
] ;
is_concretized_as: ex:the_materials_hv5_hardness ;
is_about: ex:the_slab_and_material .
ex:EN_10088 a directive_information_entity: ;
label: "EN 10088" ;
has_part: ex:the_materials_hardness_specification .
(see folder: patterns/measurement/ )
Pattern 8a - Expressing a (scalar) value with "Scalar Value Specification" ...
- Purpose: Represents scalar physical quantities, combining a numerical value and a unit.
Core Properties:
obi:hasSpecifiedNumericValueiao:hasMeasurementUnitLabeliao:MeasurementUnitLabel
Example Use Case: The example describes a scalar value specification, ex:scalar_value_specification_X, which is assigned a numeric value of 135.0 and linked to a measurement unit represented by the individual ex:unit_X. The numeric value is provided via the OBI property has_specified_numeric_value, while the unit is associated through the IAO property has_measurement_unit_label. The unit individual ex:unit_X is typed as a measurement unit label, but in practice this placeholder unit could be replaced by a formally defined unit from established ontologies such as UO (Units of Measurement Ontology) or QUDT (Quantities, Units, Dimensions, and Types). Together, the triples express that a value of 135.0 is specified in some unit, whether a custom one like ex:unit_X or a standard unit drawn from UO or QUDT.
📄 View pattern code
@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#> .
<https://w3id.org/pmd/co/test/shape2> rdf:type owl:Ontology .
@prefix has_measurement_unit_label: <http://purl.obolibrary.org/obo/IAO_0000039> .
@prefix has_specified_numeric_value: <http://purl.obolibrary.org/obo/OBI_0001937> .
@prefix measurement_unit: <http://purl.obolibrary.org/obo/IAO_0000003> .
@prefix specifically_dependent_continuant: <http://purl.obolibrary.org/obo/BFO_0000020> .
@prefix specified_by_value: <https://w3id.org/pmd/co/PMD_0000077> .
@prefix scalar_value_specification: <http://purl.obolibrary.org/obo/OBI_0001931> .
ex:the_property a specifically_dependent_continuant: ;
specified_by_value: ex:the_scalar_value_specification .
ex:the_scalar_value_specification a scalar_value_specification: ;
has_measurement_unit_label: <http://purl.obolibrary.org/obo/UO_0000019> ; # Angstrom
has_specified_numeric_value: "42"^^xsd:float .
(see folder: patterns/scalar value specification/ )
Pattern 8b - ... and expressing a categorical value
Purpose: Represents how categorical values such as ferrite, face-centered cubic, and liquid are used to specify the values of material characteristics.
Example Use Case: The example describes materials and the categorical qualities they might possess. In the first example, ex:fcc_material is a material that has both a crystal structure and a grain structure. Its crystal structure quality is assigned the categorical value "face-centered cubic", and its grain structure quality is assigned the categorical value "ferrite", which is also explicitly stated to be about this same material. In other words, the material is characterized as having an FCC crystal structure and a ferritic grain structure.
In the second example, ex:steel_melt is described as a melt that has an aggregate state quality. This quality is given the categorical value "liquid", indicating that the melt is in the liquid state.
📄 View pattern code
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix sh: <http://www.w3.org/ns/shacl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ex: <http://www.example.org/#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix obo: <http://purl.obolibrary.org/obo/> .
@prefix pmd: <https://w3id.org/pmd/co/> .
@prefix unit: <http://qudt.org/vocab/unit/> .
@prefix shape: <https://w3id.org/pmd/co/shapes> .
@base <https://w3id.org/pmd/co/test/shape_categorical_value_specification#> .
<https://w3id.org/pmd/co/test/shape_categorical_value_specification>
rdf:type owl:Ontology .
### Define prefixes ###
# Classes
@prefix categorical_value_specification: <http://purl.obolibrary.org/obo/OBI_0001930> .
@prefix material: <https://w3id.org/pmd/co/PMD_0000000> .
@prefix melt: <https://w3id.org/pmd/co/PMD_0020139> .
@prefix entity: <http://purl.obolibrary.org/obo/BFO_0000001> .
@prefix quality: <http://purl.obolibrary.org/obo/BFO_0000019> .
@prefix metallic_grain_structure: <https://w3id.org/pmd/co/PMD_0025003> . # SDC
@prefix ferrite: <https://w3id.org/pmd/co/PMD_0020100> . # Individual
@prefix metallic_grain_structures: <https://w3id.org/pmd/co/PMD_0020023> . # Categorical value
@prefix aggregate_state_value: <https://w3id.org/pmd/co/PMD_0020116> . # Categorical value
@prefix aggregate_state_liquid: <https://w3id.org/pmd/co/PMD_0020118> . # Individual
@prefix aggregate_state: <https://w3id.org/pmd/co/PMD_0000512> . # SDC
@prefix crystal_structure: <https://w3id.org/pmd/co/PMD_0000591> . # SDC
@prefix bravais_lattice: <https://w3id.org/pmd/co/PMD_0020099> . # Categorical value
@prefix bravais_lattice_cubic_face_centered: <https://w3id.org/pmd/co/PMD_0020019> . # Individual
@prefix in_minimal: <https://w3id.org/pmd/co/PMD_0000060> .
# Object properties
@prefix has_quality: <http://purl.obolibrary.org/obo/RO_0000086> .
@prefix specifies_value_of: <http://purl.obolibrary.org/obo/OBI_0001927> .
@prefix is_about: <http://purl.obolibrary.org/obo/IAO_0000136> .
@prefix specified_by_value: <https://w3id.org/pmd/co/PMD_0000077> .
### Define entities ###
# Example 1
ex:fcc_material a material: ;
has_quality: ex:crystal_structure_quality ,
ex:grain_structure_quality .
ex:crystal_structure_quality a crystal_structure: .
bravais_lattice_cubic_face_centered: specifies_value_of: ex:crystal_structure_quality .
ex:grain_structure_quality a metallic_grain_structure: .
ferrite: specifies_value_of: ex:grain_structure_quality .
ferrite: is_about: ex:fcc_material .
# Example 2
ex:steel_melt a melt: ;
has_quality: ex:aggregate_state_quality .
ex:aggregate_state_quality a aggregate_state: ;
specified_by_value: aggregate_state_liquid: .
(see folder: patterns/categorical value specification/ )
Section 3: the world of computation and simulation
Many scientific questions in MSE are addressed using computational materials science. This section introduces the representation of simulations and their in- and outputs.
Pattern 9 - Simulation with in- and output
- Purpose: Information content entities as input and output of (simulation-)processes.
- Example Use Case: A challenge arises when working with digital data about material entities, as is the case in simulations. Due to our ontological commitment to BFO, roles (like described in the patterns above) can only inhere in independent continuants, because a role is something that is physically realized when its bearer participates in a process. Information Content Entities (ICEs), such as datasets, specifications, or parameter files used in a simulation are generically dependent continuants. They are abstract contents that rely on some physical carrier (e.g., a hard drive) but do not themselves participate physically in a process. Assigning roles directly to ICEs would require the role to inhere in the ICE rather than in a material entity, which violates BFO's ontological constraints. To preserve the functionality of roles for informational inputs and outputs, we introduce process boundaries as "input/output assignments". In this pattern, an ICE participates in an input (or output) assignment, which is a dependent entity representing the assignment of that ICE to the process. The assignment itself is then part of the main process. This allows us to capture the role-like semantics of inputs and outputs without violating BFO's constraint that roles must inhere in material entities. Each assignment can be typed to specify its intended function in the process, while maintaining ontological consistency. For example, in a division calculation process, two numbers considered as ICE serve as inputs through role-like assignments: one as the numerator, and the other as the denominator. Each number participates in an input assignment that is part of the division process, while the resulting quotient participates in an output assignment. This pattern captures the functional roles of inputs and outputs without requiring the numbers themselves to bear roles directly, maintaining ontological consistency.
📄 View pattern code
@prefix : <http://example.org/division#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix hasParticipant: <http://purl.obolibrary.org/obo/RO_0000057> .
@prefix partOf: <http://purl.obolibrary.org/obo/BFO_0000050> .
@prefix InformationContentEntity: <http://purl.obolibrary.org/obo/IAO_0000030> .
@prefix SimulationProcess: <https://w3id.org/pmd/co/PMD_0000933> .
@prefix InputAssignment: <https://w3id.org/pmd/co/PMD_0000066> .
@prefix OutputAssignment: <https://w3id.org/pmd/co/PMD_0000067> .
@prefix hasSpecifiedValue: <http://purl.obolibrary.org/obo/OBI_0001937> .
@prefix isSpecifiedInputOf: <http://purl.obolibrary.org/obo/OBI_0000295> .
@prefix isSpecifiedOutputOf: <http://purl.obolibrary.org/obo/OBI_0000312> .
@prefix realizes: <http://purl.obolibrary.org/obo/BFO_0000055> .
############################
# CLASS AXIOMS
############################
:Number rdfs:subClassOf InformationContentEntity: .
:DivisionProcess rdfs:subClassOf SimulationProcess: .
:NumeratorAssignment rdfs:subClassOf
InputAssignment: ,
[ rdf:type owl:Restriction ;
owl:onProperty hasParticipant: ;
owl:someValuesFrom :Number ],
[ rdf:type owl:Restriction ;
owl:onProperty partOf: ;
owl:someValuesFrom :DivisionProcess ] .
:DenominatorAssignment rdfs:subClassOf
InputAssignment: ,
[ rdf:type owl:Restriction ;
owl:onProperty hasParticipant: ;
owl:someValuesFrom :Number ],
[ rdf:type owl:Restriction ;
owl:onProperty partOf: ;
owl:someValuesFrom :DivisionProcess ] .
:QuotientAssignment rdfs:subClassOf
OutputAssignment: ,
[ rdf:type owl:Restriction ;
owl:onProperty hasParticipant: ;
owl:someValuesFrom :Number ],
[ rdf:type owl:Restriction ;
owl:onProperty partOf: ;
owl:someValuesFrom :DivisionProcess ] .
############################
# INDIVIDUALS
############################
:num1 rdf:type :Number ;
hasSpecifiedValue: "10"^^xsd:integer ;
isSpecifiedInputOf: :div1 .
:num2 rdf:type :Number ;
hasSpecifiedValue: "2"^^xsd:integer ;
isSpecifiedInputOf: :div1 .
:quotient1 rdf:type :Number ;
hasSpecifiedValue: "5"^^xsd:integer ;
isSpecifiedOutputOf: :div1 .
:div1 rdf:type :DivisionProcess ;
realizes: :plan1 .
:numerator_assign rdf:type :NumeratorAssignment ;
hasParticipant: :num1 ;
partOf: :div1 .
:denominator_assign rdf:type :DenominatorAssignment ;
hasParticipant: :num2 ;
partOf: :div1 .
:quotient_assign rdf:type :QuotientAssignment ;
hasParticipant: :quotient1 ;
partOf: :div1 .
(see folder: patterns/simulation inout simple/ )
More patterns at GitHub
More patterns can be found in the patterns folder :
https://github.com/materialdigital/core-ontology/tree/main/patterns