Query support

The repository maintained by the Integration Service can be searched efficiently using structured queries in the query language RAQL. RAQL has specifically been designed for the ImageMaster environment and is also used internally, for example in ImageMaster permissions and role definitions. RAQL allows defining powerful queries which may even consider environment data, which exists outside of the persistence model (for example the user ID from a current session, which may be included in a request’s header information). Further information on RAQL is summarized in the next chapter.

Queries are independent of the persistence model of the Integration Service. That is, users are not required to have knowledge on the actual persistence model used by the Integration Service as queries are solely based on the data model. The query support is important for the following system use cases from the Integration Service1:

  • document queries:

    searching for documents with certain attributes or even considering further content or binary object properties from the overall ImageMaster data model

  • access control:

    restricting search results according to a user’s permissions and roles

The basic addressable entities in a query are the entities stored and maintained by the Integration Service, such as revisions and documents. Conceptually, all these addressable, searchable, and distinguishable entities form the so-called “universe” of the Integration Service. For each type of entity there is a separate so-called “galaxy”, for example, the galaxy of all revisions which is called “revisions”. A query can either select a whole galaxy − which would return all entities belonging to this galaxy − or, probably more useful in practice, formulate a restriction that filters out entities from a galaxy on basis of the entity’s properties.

In practice the query language will have to be employed in a SOAP message when using one of the following Integration Service methods:

  • query

  • createRole (as part of the role definition in combination with rights)

  • getTenantOwnership, setTenantOwnership