Essential Object Query (EOQ) is a language for distributed and efficient interaction with object-oriented data, i.e. domain-specific models. It explicitly supports pattern searching as used in model transformation languages. EOQ includes a query language that is easy to parse and behaves deterministically, but provides maximum efficiency and flexibility when working with domain-specific models. The capabilities and semantics of EOQ are similar to those of the Object Constraint Language (OCL), but EOQ additionally supports atomic model changes, events, and error handling.
The basic function of EOQ is shown in the following example:
retrieves all values of the attribute "name" of all objects of type "Task" existing in the domain. The return value is a list of strings, e.g.
['Flight Control', 'Stick Input', 'Security Monitor',...].
Simultaneous interaction of multiple clients with multiple models is supported. EOQ is independent of any particular metamodel.
EOQ is available as open source under the MIT license.
EOQ homepage: https://gitlab.com/eoq/essentialobjectquery