Character symbols for ReferenceTypes

Unified Architecture topics related to OPC UA Specification, compliant behavior and any technical issues of OPC UA, like Security, Information Model, Companion Specs DI, PLCopen, ADI, ...

Moderator: Support Team

Post Reply
Al González
Jr. Member
Jr. Member
Posts: 4
Joined: 06 Oct 2015, 18:20

Character symbols for ReferenceTypes

Post by Al González »

I want submit this modest proposal for consideration of the OPC UA community. I designed a little table of symbols to represent references between OPC UA nodes in text format.

The idea is easily represent linear node relationships, by writing their BrowseNames connected by special characters. This can be useful in forums, e-mail messages, lessons, meetings, conferences and workshops where we need to quickly express small pieces of an Address Space (not forgetting that there are other useful symbol systems as UML). Further, this could be brought to the field of programming, by using parsers.

This is the table and some examples.

Code: Select all

Reference          Implicit  Implicit  Explicit forward       Explicit inverse        Explicit inverse
type               forward   inverse   example                example                 name example
--------------------------------------------------------------------------------------------------------
Any                --        !--       -HasEncoding-          !-HasEncoding-          -EncodingOf-
Symmetric          <>                  <MyConnectsTo>
Asymmetric         +>        !+>       +HasModellingRule>     !+HasModellingRule>     +ModellingRuleOf>
Hierarchical       ->        !->       -Organizes>            !-Organizes>            -OrganizedBy>
HasComponent       -.        !-.       -HasOrderedComponent.  !-HasOrderedComponent.  -ComponentOf.
HasProperty        -:        !-:
HasTypeDefinition  >>        !>>       >MyHasTypeDefinition>  !>MyHasTypeDefinition>  >TypeDefinitionOf>
HasSubtype         <<        !<<       <MyHasSubtype<         !<MyHasSubtype<         <SubtypeOf<
HasEventSource     />        !/>       /HasNotifier>          !/HasNotifier>          /EventSourceOf>
Expression examples:

Area1->TankA-.Pump
(Object node 'Pump' of tank TankA in Area1)

Area1->TankA-.Pump-.Start
(Method node 'Start' of the pump of tank TankA in Area1)

Area1-Organizes>TankA-:NodeVersion
('NodeVersion' property of tank TankA in Area1)

Area1->TankA-.Pump>>
(TypeDefinition of the pump of tank TankA in Area1)

Area1->TankA-HasChild>
(Direct child nodes of tank TankA in Area1)

Area1->TankA-.Pump-.
(Direct components of the pump of tank TankA in Area1)

Area1->TankA-HasOrderedComponent.
(Direct ordered components of tank TankA in Area1)

Inverse examples in program statements:

PropNode.GetNode ('!-:')
(Equivalent to '-PropertyOf:', gets the node to which PropNode belongs as property.)

TypeNode.GetNode ('!<<')
(Equivalent to '<SubtypeOf<', gets the type node parent of TypeNode.)

I would like to know all your opinions on this proposal.

Thank you so much. :)
Al Gonzalez
OPC UA and Delphi programmer

Post Reply