eclipse-esmf / esmf-semantic-aspect-meta-model

Formal and textual specification of the Semantic Aspect Meta Model (SAMM)
https://eclipse-esmf.github.io/samm-specification/snapshot/index.html
Mozilla Public License 2.0
46 stars 9 forks source link

[Task] Support Asset Administration Shell Range SubmodelElement #132

Open BirgitBoss opened 2 years ago

BirgitBoss commented 2 years ago

Is your task related to a problem? Please describe. BAMM shall support the semantic definition of range submodel elements in the Asset Administration Shell.

Describe the solution you'd like Introduce a predefined abstract entity with two attributes min and max. The values of min and max shall be numeric but have no predefined data type.

Describe alternatives you've considered none

Additional context https://industrialdigitaltwin.org/wp-content/uploads/2021/09/07_details_of_the_asset_administration_shell_part1_v3_en_2020.pdf

atextor commented 2 years ago

Here is a proposal for the definition:

bamm-e:Range a bamm:AbstractEntity ;
   bamm:properties ( bamm-e:min bamm-e:max ) .

bamm-e:minValue a bamm:AbstractProperty ;
  bamm:preferredName "minimum value"@en ;
  bamm:description "The minimum value"@en .

bamm-e:maxValue a bamm:AbstractProperty .

Here is how you would use it, in combination with a bamm-c:RangeConstraint:

:FloatQuantifiable a bamm-c:Quantifiable ;
  bamm-c:unit unit:rpm ;
  bamm:dataType xsd:float .

:ConstrainedTorque a bamm-c:Trait ;
  bamm-c:baseCharacteristic :FloatQuantifiable ;
  bamm-c:constraint [
    a bamm-c:RangeConstraint ;
    bamm-c:minValue "3"^^xsd:float ;
    bamm-c:maxValue "10"^^xsd:float ;
    bamm-c:upperBoundDefinition bamm-c:AT_MOST ;
    bamm-c:lowerBoundDefinition bamm-c:GREATER_THAN ;
  ] .

:TorqueRange a bamm:Entity ;
  bamm:extends bamm-e:Range ;
  bamm:properties (
    [ bamm:extends bamm-e:minValue ; bamm:characteristic :ConstrainedTorque; bamm:payloadName "min" ]
    [ bamm:extends bamm-e:maxValue ; bamm:characteristic :ConstrainedTorque; bamm:payloadName "max" ]
  ) .

And the corresponding payload for a bamm:Property called myvalue using :TorqueRange as its datatype:

{
    "myvalue": {
        "min": 4,
        "max": 7
    }
}

To discuss: We now would have both bamm-c:minValue and bamm-e:minValue (and maxValue) with different semantics, one being an attribute for the RangeConstraint and the other being an Abstract Property. This might lead to confusion, so a different name might be necessary.