An Internal Domain-Specific Language for Constructing OPC UA Queries and Event Filters

The OPC Unified Architecture (OPC UA) is becoming more and more important for industrial automation products. The development of OPC UA components is currently supported by the use of SDKs for OPC UA. However, these SDKs provide only low level support for creating OPC UA based applications. This leads to higher development efforts. The domain-specific metamodel defined by OPC UA defines serves as a good basis for creating domain-specific languages on a higher abstraction level. This has the potential of reducing development efforts. In this paper, we focus on the event filter and query part of OPC UA. Current SDKs only provide interfaces for constructing an object tree for these queries and event filters programmatically. Creating and maintaining these object structures is tedious and error prone. Therefore, we introduce an internal DSL approach for constructing OPC UA queries and event filters based on the OPC UA information model and the Language Integrated Queries (LINQ) feature available in .Net.