which reduces the set of Information System instances to only those, whose value of the 'Costs' attribute exceeds one hundred. The '@' character denotes the name of an attribute of the context building block or association (here Information System). There are several more comparison operators for properties, all of which are listed in the Predicates and Predicate-Defining Operators. FurthermoreCurrently, a simple filter you can not only specify the dependency between a property and a value, but also not between two properties. With the last example in mind, let us assume that the Information System building block also has a numeric attribute 'Revenue'. Then, to select all instances of Information System which cost more than they return, one would write:
InformationSystem [ @Costs > @Operating expenses] ; !!Ticket is written
Except for the simple criteria based on the value of one attribute, iteraQL also supports the definition of complex criteria through the three boolean operators AND, OR and NOT. The AND boolean operator is given through the ampersand character '&' given between the two sub-criteria. For example
The expand operator is also available for both kinds of query - building blocks or associations, and relations. This operator requires a self-referencing relation or a cyclic path and produces a new building block or association which enriches the base one with all instances reachable through the provided self-referencing relation or cyclic path. When applied in the context of a relation, the context type of the expand operator is the one the relation leads to. The expand operator can, for example, be used to answer the question 'Which Information Systems depend on the same Technical Components as the CRM Information Systems?'
InformationSystem[@name.contains("CRM")] .expand( /technicalComponentReleases /informationSystemReleases); !!Dont work Ticket is written //InformationSystem[@name.contains("CRM")] .expand( /technicalComponentAssociations/technicalComponent /informationSystemDomainAssociationsinformationSystemAssociations/informationSystemDomaininformationSystem);
First, a new building block type which represents all Infomration System instances with 'CRM' in their name is created. Then this new type becomes part of a further building block type - the expanded type - which also includes all Information System instances which share a Technical Component instance with any instance from the first type. Thus, the instances of the expanded type are both the Information Systems with 'CRM' in their name and all instances related over a Technical Component instance.