The Reified Requirements Ontology
An upper ontology for requirements in OWL
Table of Contents
- 1. Introduction
- 2. Download
- 3. Intended use of this ontology
- 4. License
- 5. RDF Diagrams
- 6. Ontology declarations
- 6.1. Prefixes
- 6.2. Ontology header (req-ont:core req-ont:core/A02B)
- 6.3. Classes
- 6.4. Object properties
- 6.5. Data properties
- 6.6. Annotation properties
- 6.6.1. condition statement (req:REQ_0001)
- 6.6.2. from provision (req:REQ_0002)
- 6.6.3. requirement statement (req:REQ_0003)
- 6.6.4. owl:versionInfo
- 6.6.5. dcterms:title
- 6.6.6. dcterms:license
- 6.6.7. dcterms:creator
- 6.6.8. dcterms:contributor
- 6.6.9. dcterms:modified
- 6.6.10. dcterms:publisher
- 6.6.11. dcterms:description
- 6.6.12. dcterms:issued
- 6.6.13. dc:rights
- 6.6.14. skos:synonym
- 6.6.15. skos:definition
- 6.6.16. usageNote (iof-av:usageNote)
- 6.6.17. foaf:isPrimaryTopicOf
- 6.6.18. pav:lastUpdateOn
- 6.6.19. skos:example
- 6.6.20. skos:prefLabel
- 6.6.21. skos:altLabel
- 6.6.22. iof-av:isPrimitive
- 6.6.23. skos:definition
- 6.7. Individuals
- 7. Ontology metrics
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.
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.
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.
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.)
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.
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.
4. License
This work is provided under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
"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."
5. RDF Diagrams
5.1. Class taxonomy
5.2. Object properties
6. Ontology declarations
6.1. Prefixes
The ontology document in OWL employs the namespace prefixes of table 1.
prefix | uri |
---|---|
owl: | http://www.w3.org/2002/07/owl# |
rdf: | http://www.w3.org/1999/02/22-rdf-syntax-ns# |
xml: | http://www.w3.org/XML/1998/namespace |
xsd: | http://www.w3.org/2001/XMLSchema# |
rdfs: | http://www.w3.org/2000/01/rdf-schema# |
skos: | http://www.w3.org/2004/02/skos/core# |
pav: | http://purl.org/pav/ |
foaf: | http://xmlns.com/foaf/0.1/ |
dc: | http://purl.org/dc/elements/1.1/ |
dcterms: | http://purl.org/dc/terms/ |
prov: | http://www.w3.org/ns/prov# |
iof-av: | https://spec.industrialontologies.org/ontology/core/meta/AnnotationVocabulary/ |
req: | https://w3id.org/requirement-ontology/rdl/ |
req-ont: | https://w3id.org/requirement-ontology/ontology/ |
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
- rdfs:isDefinedBy
- http://purl.org/dc/elements/1.1/
6.6.14. skos:synonym
- rdfs:isDefinedBy
- http://www.w3.org/2004/02/skos/core
6.6.15. skos:definition
- rdfs:isDefinedBy
- http://www.w3.org/2004/02/skos/core
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
- rdfs:isDefinedBy
- http://www.w3.org/2004/02/skos/core
6.6.20. skos:prefLabel
- rdfs:isDefinedBy
- http://www.w3.org/2004/02/skos/core
6.6.21. skos:altLabel
- rdfs:isDefinedBy
- http://www.w3.org/2004/02/skos/core
6.6.22. iof-av:isPrimitive
6.6.23. skos:definition
- rdfs:isDefinedBy
- http://www.w3.org/2004/02/skos/core
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 |