When defining extensions of the SBOL data model, it is necessary to subclass Identified. However, currently all extension classes will inherit the hasMeasure predicate which is not appropriate in every case.
A Measured class that subclasses Identified is a more appropriate place to put the hasMeasure predicate. The Identified class is an abstract class that should be reserved only for properties containing an object's metadata (e.g., name, description, etc.)
An example of an extension class that definitely should not inherit the hasMeasure attribute is the MeasureParameter class in the OPIL data model. To someone not familiar with OPIL, it might appear to make perfect sense that a MeasureParameter should have a hasMeasure attribute, but, in fact, this it is highly misleading and incompatible with the semantics of OPIL.
This is a very specific example, but the general principle is that Identified is an abstract class that should be reserved for object metadata, while more concrete, domain-specific properties should be represented by concrete classes.
On discussion at HARMONY 2022, there does not seem to be any support for this, and much concern about the impact of restricting the ability to add to RDF.
When defining extensions of the SBOL data model, it is necessary to subclass
Identified
. However, currently all extension classes will inherit thehasMeasure
predicate which is not appropriate in every case.A
Measured
class that subclassesIdentified
is a more appropriate place to put thehasMeasure
predicate. TheIdentified
class is an abstract class that should be reserved only for properties containing an object's metadata (e.g., name, description, etc.)An example of an extension class that definitely should not inherit the
hasMeasure
attribute is theMeasureParameter
class in the OPIL data model. To someone not familiar with OPIL, it might appear to make perfect sense that aMeasureParameter
should have ahasMeasure
attribute, but, in fact, this it is highly misleading and incompatible with the semantics of OPIL.This is a very specific example, but the general principle is that
Identified
is an abstract class that should be reserved for object metadata, while more concrete, domain-specific properties should be represented by concrete classes.