The Reified Requirements Ontology
An upper ontology for requirements in OWL

Table of Contents

1. Introduction

The Reified Requirements Ontology provides a vocabulary for expressing requirements as OWL individuals. The approach relies on punning to handle classes as individuals.

For a typical application of the ontology, a requirement is represented as an individual: as a member of the Requirement class, or any subclass of Requirement that may be introduced. The requirement source, which will typically be an organisation, is given by the posited by object property. The material “if–then” rule of the requirement is given by an SCD Clause. The antecedent of the SCD Clause is related by has scope, with an optional qualifier by has condition; and the consequent by has demand.

This ontology was authored using the ELOT tool.

2. Download

The ontology in Turtle format
req-ont.ttl

3. Intended use of this ontology

3.1. Representing a requirement

For a typical application of the ontology, a requirement is represented as an individual: as a member of the Requirement class, or any subclass of Requirement that may be introduced. The requirement source, which will typically be an organisation, is given by the posited by object property. The material “if–then” rule of the requirement is given by an SCD Clause. The antecedent of the SCD Clause is related by has scope, with an optional qualifier by has condition; and the consequent by has demand.

The following diagram illustrates the pattern. Classes defined by the ontology are represented by blue nodes, while white nodes indicate types from the OWL specification.

pattern.svg

For example, take a (fictional) Requirement no. 123 on welder qualifications issued by company ACME, that “welders shall be certified to the ISO 9606 standard”. We have

  • The organisation issuing the requirement: ACME
  • The scope class: Welder
  • There is no condition – the requirement applies to any Welder
  • The demand class: ISO 9606 certified [professional]

Expressed in semi-formal terms, we may state the requirement as, "it shall be case that every Welder is a ISO 9606 certified. The pattern will then be instantiated as in the following diagram, where purple nodes indicate individuals, amber nodes indicate classes defined for the use case. The annotation property requirement statement is provided for the natural language expression of the requirement.

pattern-instance.svg

The representation relies on the punning capability of OWL 2 to allow for the treatment of classes – here, Welder and ISO 9606 certified – as individuals. The following diagram adds types to the previous illustration to indicate this.

pattern-instance-withtypes.svg

3.2. Transforming a reified requirement for inference

As represented according to the pattern of this ontology, a requirement lacks the logical force of a rule: when represented as (punned) individuals, there is no semantic relationship between members of Welder and the required membership in ISO 9606 certified.

To apply requirements to an existing ontology, a transformation is needed so that the rule, “every Welder shall be certified”, has semantic weight. Such a transformation can, for example, be applied using a SPARQL construct query.

In a naive interpretation, we may choose to represent the rule of the requirement as an OWL axiom stating, Welder is a subclass of ISO 9606 certified. Note that this will be too rigid as a proper interpretation of a requirement – it will yield an inconsistency if any welder individual is known not to be certified. (Because OWL DL has no support for defeasible rules, other transformations or rule mechanisms may be required, depending on the use case.)

pattern-applied-noanntation.svg

To preserve a link from this axiom back to the requirement, it may be reified (using owl:Axiom, cf. https://www.w3.org/TR/owl2-syntax/#Axioms), then linked using the provided OWL annotation property from requirement.

pattern-applied.svg

3.3. Representing a violation of a requirement

The ontology provides the object property violates provision for representing that an individual is in violation of a requirement. Continuing on the example above, assume that J. Doe is a non-certified Welder individual; the following diagram illustrates how this may be applied.

pattern-violation.svg

4. License

This work is provided under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)

CC-BY-SA_icon.png

"You are free to:

  • Share – copy and redistribute the material in any medium or format
  • Adapt – remix, transform, and build upon the material for any purpose, even commercially.

The licensor cannot revoke these freedoms as long as you follow the license terms.

Under the following terms:

  • Attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • ShareAlike – If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original."

(https://creativecommons.org/licenses/by-sa/4.0/)

5. RDF Diagrams

5.1. Class taxonomy

req-ont-classes-construct.svg

5.2. Object properties

req-ont-ops-construct.svg

6. Ontology declarations

6.2. Ontology header (req-ont:core req-ont:core/A02B)

owl:versionInfo
A02B
dcterms:title
“Reified Requirements Ontology”@en
dcterms:title
“Ontologi for reifiserte krav”@no
pav:lastUpdateOn
“2025-03-05T14:30:33Z”^^xsd:dateTime
dcterms:license
https://creativecommons.org/licenses/by-sa/4.0/
dcterms:creator
https://orcid.org/0000-0002-7167-7321
dcterms:contributor
https://orcid.org/0000-0002-6228-1317
dcterms:modified
“2025-03-05”^^xsd:date
dcterms:publisher
https://www.dnv.com
dc:rights
Copyright DNV Performance and Assurance Solutions
dcterms:description
The Reified Requirements Ontology provides classes and relations for representing requirements as OWL individuals. The intended use relies on punning to handle classes as individuals.
rdfs:comment
The Reified Requirements Ontology provides classes and relations for representing requirements as OWL individuals. The intended use relies on punning to handle classes as individuals.

6.3. Classes

6.3.1. Proposition (req:REQ_0009)   oneof disjoint

iof-av:usageNote
A Proposition is an individual that represents the content of a statement – a reified proposition.
6.3.1.1. SCD Clause (req:REQ_0008)
iof-av:usageNote
A Scope, Condition, Demand (SCD) clause is an individual that represents a conditional statement that follows a fixed pattern, as suitable for representing the non-modal rule content of a requirement. With Scope given as class A, Condition as B, and Demand as C, the SCD clause is the conditional “everything which is both an A and a B is a C”.
SubClassOf
req:REQ_0021 exactly 1 Thing
SubClassOf
req:REQ_0019 max 1 Thing
SubClassOf
req:REQ_0020 exactly 1 Thing
6.3.1.2. Provision (req:REQ_0007)
iof-av:usageNote
A Provision individual represents a proposition with normative modality. The name “provision” is chosen as a generic covering term for both strong (command, requirement) and weak (suggestion) modalities. Subclasses of Provision should be introduced along with precise heuristics for application as appropriate to the modality.
rdfs:seeAlso
ISO/IEC Directives, Part 2 Terms and definitions, clause 3.3.1 ’provision’
skos:synonym
Advice
rdfs:comment
Up to version A02A of this ontology, this class was named “Advice”. The change to “Provision” is intended to align with common use in standards documents.
SubClassOf
req:REQ_0018 exactly 1 req:REQ_0008
6.3.1.2.1. Recommendation (req:REQ_0010)
iof-av:usageNote
A Recommendation individual represents a proposition with the modality of “it is recommended that …”.
6.3.1.2.2. Requirement (req:REQ_0011)
iof-av:usageNote
A Requirement individual represents a proposition with the modality of “it is required that …”. In typical applications, anything that is required will also count as being recommended, but not vice versa.

6.3.2. Provision Source (req:REQ_0012)

iof-av:usageNote
A Provision Source is an entity that issues provisions. Typically this will be a public body with authority to regulate, or a private enterprise stating requirements for a contract.

6.3.3. Provision Subject (req:REQ_0023)

rdfs:comment
A Provision Subject is an individual which is a member of the Scope and Condition of some Provision.
6.3.3.1. Requirement Subject (req:REQ_0024)
rdfs:comment
Entity that is subject to some requirement.
6.3.3.2. Recommendation Subject (req:REQ_0029)
rdfs:comment
Entity that is subject to some recommendation.
6.3.3.3. Non-Compliant Subject (req:REQ_0025)
rdfs:comment
Entity that violates some Provision.
EquivalentTo
req:REQ_0027 some req:REQ_0007

6.4. Object properties

6.4.1. has scope (req:REQ_0021)

rdfs:comment
Pointer to the scope of an SCD clause. The intended use is to point to a (punned) generic class – “what kind of thing does the clause apply to”. Note that the distinction between scope and condition is only heuristic.
Characteristics:
Functional
Domain
req:REQ_0008

6.4.2. has condition (req:REQ_0019)

rdfs:comment
Pointer to the condition of an SCD clause. The intended use is to point to a (punned) class that represents a feature or local context – “in which circumstances does the clause apply”.
Characteristics:
Functional
Domain
req:REQ_0008

6.4.3. has demand (req:REQ_0020)

rdfs:comment
Pointer to the demand of an SCD clause. The intended use is to point to a (punned) class that represents a constraint – “what is demanded by the clause”.
Characteristics:
Functional
Domain
req:REQ_0008

6.4.4. has SCD clause (req:REQ_0018)

rdfs:comment
Pointer to the SCD clause of a Provision individual, i.e., the (non-modal) rule that is the content of the provision.
Domain
req:REQ_0007
Range
req:REQ_0008

6.4.5. posited by (req:REQ_0022)

rdfs:comment
For a Provision individual, pointer to the Provision Source that has issued the provision.
Domain
req:REQ_0007
Range
req:REQ_0012

6.4.6. exempt from provision (req:REQ_0030)

rdfs:comment
Pointer to a provision individual that carries a constraint from which the subject is exempt.
Range
req:REQ_0007
6.4.6.1. exempt from requirement (req:REQ_0031)
rdfs:comment
Pointer to a requirement individual that carries a constraint from which the subject is exempt.
Range
req:REQ_0011
6.4.6.2. exempt from recommendation (req:REQ_0032)
rdfs:comment
Pointer to a recommendation individual that implies a constraint from which the subject is exempt.
Range
req:REQ_0010

6.4.7. violates provision (req:REQ_0027)

rdfs:comment
Pointer to a provision individual that carries a constraint which is contradicted by the subject.
Domain
req:REQ_0025
Range
req:REQ_0007
6.4.7.1. violates requirement (req:REQ_0026)
rdfs:comment
Pointer to a requirement individual that carries a constraint which is contradicted by the subject.
Range
req:REQ_0011
6.4.7.2. violates recommendation (req:REQ_0028)
rdfs:comment
Pointer to a recommendation individual that implies a constraint which is contradicted by the subject.
Range
req:REQ_0010

6.5. Data properties

This ontology contains no owl:DatatypeProperty.

6.6. Annotation properties

6.6.1. condition statement (req:REQ_0001)

iof-av:usageNote
Use this property for the natural language statement of a condition. This may be used even for requirements that have no Condition (in the SCD clause), as for instance where the condition is vague or not represented by an RDL class.

6.6.2. from provision (req:REQ_0002)

iof-av:usageNote
For subclass axioms that originate in identified provisions (i.e., requirement or recommendation individuals), pointer to the origin of the constraint expressed.

6.6.3. requirement statement (req:REQ_0003)

iof-av:usageNote
Use this property for a natural language explication of a requirement.

6.6.4. owl:versionInfo

6.6.5. dcterms:title

rdfs:isDefinedBy
http://purl.org/dc/terms/

6.6.6. dcterms:license

rdfs:isDefinedBy
http://purl.org/dc/terms/

6.6.7. dcterms:creator

rdfs:isDefinedBy
http://purl.org/dc/terms/

6.6.8. dcterms:contributor

6.6.9. dcterms:modified

rdfs:isDefinedBy
http://purl.org/dc/terms/

6.6.10. dcterms:publisher

rdfs:isDefinedBy
http://purl.org/dc/terms/

6.6.11. dcterms:description

rdfs:isDefinedBy
http://purl.org/dc/terms/

6.6.12. dcterms:issued

6.6.13. dc:rights

6.6.14. skos:synonym

6.6.15. skos:definition

6.6.15.1. natural language definition (iof-av:naturalLanguageDefinition)
6.6.15.2. primitive rationale (iof-av:primitiveRationale)

6.6.16. usageNote (iof-av:usageNote)

6.6.17. foaf:isPrimaryTopicOf

6.6.18. pav:lastUpdateOn

rdfs:isDefinedBy
http://purl.org/pav/

6.6.19. skos:example

6.6.20. skos:prefLabel

6.6.21. skos:altLabel

6.6.23. skos:definition

6.6.23.1. iof-av:naturalLanguageDefinition
6.6.23.2. iof-av:primitiveRationale

6.7. Individuals

This ontology contains no owl:NamedIndividual.

7. Ontology metrics

The following table of ontology metrics was produced using the measure tool provided by the ROBOT OBO Tool.

metric metric_value metric_type
abox_axiom_count 0 single_value
abox_axiom_count_incl 0 single_value
annotation_property_count 28 single_value
annotation_property_count_incl 28 single_value
axiom_count 176 single_value
axiom_count_incl 176 single_value
class_count 11 single_value
class_count_incl 11 single_value
dataproperty_count 0 single_value
dataproperty_count_incl 0 single_value
datatypes_count 8 single_value
datatypes_count_incl 8 single_value
individual_count 0 single_value
individual_count_incl 0 single_value
logical_axiom_count 32 single_value
logical_axiom_count_incl 32 single_value
obj_property_count 11 single_value
obj_property_count_incl 11 single_value
ontology_anno_count 14 single_value
ontology_iri https://w3id.org/requirement-ontology/ontology/core single_value
ontology_version_iri https://w3id.org/requirement-ontology/ontology/core/A02B single_value
owl2 true single_value
owl2_dl true single_value
owl2_el false single_value
owl2_ql false single_value
owl2_rl false single_value
rbox_axiom_count 4 single_value
rbox_axiom_count_incl 4 single_value
rdfs false single_value
rule_count 0 single_value
rule_count_incl 0 single_value
signature_entity_count 58 single_value
signature_entity_count_incl 58 single_value
tbox_axiom_count 28 single_value
tbox_axiom_count_incl 28 single_value
tboxrbox_axiom_count 32 single_value
tboxrbox_axiom_count_incl 32 single_value

Date: 2025-03-05

Author: Johan W. Klüwer, DNV

Created: 2025-03-05 ons. 14:30

Validate