i40-Tools / AutomationMLOntology

Repository for the development of the AutomationML Ontology
https://vocol.iais.fraunhofer.de/aml/
Apache License 2.0
7 stars 2 forks source link

How to properly model the relation between External Interfaces and Internal Links #2

Open igrangel opened 6 years ago

igrangel commented 6 years ago

How to model the relation between an Internal Link and an External Interface. Considering the following example (taken from a real example made by experts ) The InternalLink LinkSetPointSWHW references the combination of Internal Elements and External Interfaces. RefPartnerSideA references the Internal Element C and the External Interface SetPointSW. RefPartnerSideB references the Internal Element LIRCS+-A+- and the External Interface SetPointHW.

InternalLink references RefPartner (cardinality = 2)

RefPartner is the combination of (maybe the Union) an InternalElement and an ExternalInterface

<InternalLink Name="LinkSetPointSWHW" RefPartnerSideA="5df276b3-b22c-4c5e-903e-bb3be141c892:SetPointSW" RefPartnerSideB="adb2ebf7-dc6f-479b-abfe-64a4fd69c209:SetPointHW" />

<InternalElement Name="C" ID="5df276b3-b22c-4c5e-903e-bb3be141c892" RefBaseSystemUnitPath="NE150SUCLibrary/Control">

<InternalElement Name="LIRCS+-A+-" RefBaseSystemUnitPath="NE150SUCLibrary/PCERequest" ID="adb2ebf7-dc6f-479b-abfe-64a4fd69c209">

<ExternalInterface Name="SetPointSW" RefBaseClassPath="NE150InterfaceLibrary/SWSignal" ID="a6b7ed29-4b3a-4a6b-870a-7283cb1a6dce">

<ExternalInterface Name="SetPointHW" RefBaseClassPath="NE150InterfaceLibrary/HWSignal" ID="cbc4f253-0aaf-4879-9732-efcd8d3b4de3">

olga-kovalenko commented 6 years ago

After looking through the sample files, I would suggest the following:

1) we define 4 extra object properties:

2) We can optionally define referencesInternalLink (or smth like) property from the ExternalInterface to InternalLink, which would model the opposite direction of the connection from IL to EI. But i am not sure it is needed.

olga-kovalenko commented 6 years ago

Also, one should be careful with how the values are assigned between the "A" and "B" sides. In the examples i have its always across, e.g., if there is a connection between Band and a Frame then it is modeled like: [SideA_Object]: Band, [SideA_Interface]: Frame_Interface, [SideB_Object]:Frame, [SideB_Interface]:Band_Interface

And direction is important!