-
Notifications
You must be signed in to change notification settings - Fork 21
Description
We recommend the following two patterns for modeling a range of magnitudes. Note that the class gist:Magnitude
is not used, because a magnitude represents an exact value, whereas a range is a specification.
Pattern 1
:_Specification_1
a gist:Specification ;
gist:hasAspect gistd:_Aspect_length ;
gist:hasUnitOfMeasure gistd:_UnitOfMeasure_inch ;
:valueGreaterThan 40 ;
:valueLessThan 50 ;
.
To implement this model, define in your own namespace the predicates you need for greater than, less than, greater than or equal to, less than or equal to, equal to. Note that gist:numericValue
, which is used for actual amounts, should not be the superproperty of these properties, else a reasoner will generate the following false inferences from the triples above:
:_Specification_1
gist:numericValue 40 ;
gist:numericValue 50 ;
.
While gist:numericValue
is not formally defined as a functional property, it is typically used that way, and therefore these inferences would likely wreak havoc with your data.
You might consider defining a subclass of gist:Specification
such as :SpecEntry
, roughly as follows:
:SpecEntry a owl:Class ;
owl:equivalentClass [
a owl:Class ;
owl:intersectionOf (
gist:Specification ;
[
a owl:Restriction ;
owl:onProperty gist:hasAspect ;
owl:someValuesFrom gist:Aspect ;
]
[
a owl:Restriction ;
owl:onProperty gist:hasUnitOfMeasure ;
owl:someValuesFrom gist:UnitOfMeasure ;
]
# If you have defined a superproperty above:
[
a owl:Restriction ;
owl:onProperty :specifiedValue ;
owl:someValuesFrom rdfs:Literal ; # or see the range of gist:numericValue
]
)
] ;
.
Pattern 2
ex:_Specification_1 # or SpecEntry
a gist:Specification ; # or SpecEntry
ops:hasValueGreaterThan :mag_1 ;
ops:hasValueLessThan :mag_2 ;
.
:mag_1 a gist:Magnitude ;
gist:hasAspect gistd:_Aspect_length ;
gist:hasUnitOfMeasure gistd:_UnitOfMeasure_inch ;
gist:numericValue 40 ;
.
:mag_1 a gist:Magnitude ;
gist:hasAspect gistd:_Aspect_length ;
gist:hasUnitOfMeasure gistd:_UnitOfMeasure_inch ;
gist:numericValue 50 ;
.
This pattern uses predicates defined in Semantic Arts' Operators Ontology. Note that this ontology is entirely independent of gist and does not import it.
Pros and Cons
- Pattern 1
- Pro: Aspect and unit of measure are attributed to the specification and thus common to both amounts.
- Con: Requires entirely new predicates defined in your namespace. (The Operators Ontology predicates are object properties and thus cannot be used here.)
- Pattern 2
- Con: Allows the aspect and unit of measure to differ between the two amounts.
- Pro: Predicates are already defined in an Operators Ontology that can be imported. No additions to extension ontologies are required.
Introducing the SpecEntry
class is already under consideration for gist 13.1.0. (Note that this issue is outdated, using old predicate names and the gist 12 and earlier definition of Magnitude
. It would be updated to align with the current definition.)
We will also consider introducing into gist the datatype properties used in pattern 1. In this case we would consider renaming gist:numericValue
to gist:valueEqualTo
so that numericValue
can become the superproperty. We would consider this a major change, despite no formal change to the definition, due to the shift in the meaning in the skos:definition
and the use of the property in current implementations.
Pattern 2 is supported by gist out of the box along with the Operators Ontology.