OPC UA DSL Semantic Diff

Thanks for the invitation. I am a researcher who is passionate about applying knowledge and experience in building a machine-centric global village. Let me describe a problem we have in this context related to this group’s interests.

Do we need UANodeSet semantic diff :question:

Executive summary

UANodeSet is a domain-specific language implemented using the XML standard. The syntax of the UANodeSet documents is defined in the OPC 10000-6: OPC Unified Architecture; 2017, Release 1.04.

The schema document is available at http://opcfoundation.org/UA/2011/03/UANodeSet.xsd

The description is covered by the document


The problem is reported in OPCFoundation/UA-ModelCompiler#75 and the discussion is to be continued here.

Generally speaking, talking about the tracking of the modifications we have the following possibilities:

  1. text diff
  2. XML diff
  3. XML semantic dif
  4. XML semantic dif excluding feature that was not widely used , non-critical differences , etc.

Following that my questions are:

  1. Do you know a tool that meets the requirement stated in 4?
  2. Do you know implementable rules that can be used to deploy a diff tool according to 4?

The prototyping is conducted on GitHub

1 Like

Does this mean that users should manually write XML directly? Or is the XML generated from some other notation?

1 Like

Thanks, @ftomassetti. In general no - in most cases, it is autogenerated. I try to gather the list of options as an answer in the thread What is Information Model vs Semantic-data. Unfortunately, it is a long story.

Let me only add:

  • UANodeSet - manual design is impractical or even impossible, but this document could be used directly by the communication applications, the problem is validation
  • ModelDesign - is more user-friendly but to be used must be compiled to UANodeSet.

In both cases, the same model can be represented by an infinitive number of XML documents, so it is very difficult to track semantic changes (important changes). Yesterday Nico proposed to apply an application and expose this functionality in the API. I am thinking about the same working on a tool

Any comments and advice are welcome.

For example the model could be designed using the OPC UA Address Space Model Designer maintained by me on GitHub as OSS.