The Unified Service Query Language (USQL) is an XML-based
language enabling service requestors to interact with heterogeneous
service registries and/or repositories, for the discovery of available
services. USQL provides a formal description of the unified service
requests along with their corresponding responses.
Although syntactic information suffices for the description of a service
from a technical point of view, experience has shown that confining a
service query to syntactic matching yields in most cases to scrappy
results; the response to a syntax-based query either misses services,
or contains services which are actually irrelevant to the initial
request. Furthermore, the limited expressiveness of syntactic
information is an obstacle when applying service discovery at runtime.
To tackle such cut-backs, USQL enhances service requests with semantic
information, in order to provide users with more expressive means.
The supported semantics consist of domain-specific annotations which are
bound to service operations and their respective input/output.
Briefly, USQL provides the following elements for semantically
annotating service requests:
This element enables requestors to specify an application domain for
the requested services and thus to semantically enhance the query
and to confine the search range. This is the first step towards
overcoming scrappy and irrelevant results.
These elements enable requestors to apply semantic criteria
regarding the expected input/output of an operation offered by a
This element enables requestors to apply semantic criteria
regarding the expected capability (i.e. the abstract functionality)
of an operation offered by a service.
The Input, Output, and Capability features are combined in the context
of an Operation element introduced in USQL, which is used for explicitly
expressing requirements at the operation level, rather than at the
service level. Hence, USQL moves one step further with respect to well
known service registries and their query mechanisms, such as UDDI ,
by applying service discovery in a more sophisticated and fine-grained
In addition to providing semantics for expressing service requirements,
USQL defines a set of operators, which are applied to the
aforementioned semantic annotations and enhance the matchmaking process
with reasoning and inference, thus yielding to more solid and accurate
USQL supports the following semantic operators:
Indicates that the element's value must be an exact match of the
value of the corresponding element in the service advertisement.
Indicates that the element's value must be subsumed by that of
the corresponding element in a service advertisement.
Indicates that the element's value must subsume that of the
corresponding element in a service advertisement, besides exact
The following snippet illustrates a sample of a semantically enhanced
Figure 1: A sample USQL request making use of semantics
A USQL request is generic enough to enable the discovery of any type
of service. In the above example, the service requestor asks for services
pertinent to the Finance domain, or its parent domain, offering an
operation capable of calculating the credit score of a loan applicant.
The desired input for this operation should consist of the applicant's
ID, or some other concept extending it, e.g. the applicant's SSN (Social
Security Number). The desired output should consist of the applicant's
credit score. Since no
type of match has been explicitly defined for the output, it is implied
that exact match is requested. The values of the Domain, Input, Output,
and Capability elements come from the ontology specified by the
ontologyURI attribute's value.
Besides supporting semantics, USQL offers a set of QoS elements enabling
users to look for services based on their advertised cost (price),
availability, and reliability. The combination of semantics and QoS
provides a powerful tool in the hands of service requestors.
A sample USQL response to the aforementioned request is depicted in the
figure below (Figure 2):
Figure 2: A sample USQL response
The USQL response returns specific types of services, as opposed to
the USQL request. Each service entity in the USQL response conveys two
parts of information; the first part consists of information that is
required for invoking the service, while the second part accommodates
additional, human-readable information, like the service provider, a
textual description of the service, etc.
USQL is currently evolving, so as to provide more detailed information
for invoking a Web/Grid service. Such information will most likely
include operation signatures, ports, etc. In addition, we're working
towards providing support for P2P services, regarding the concrete
information that is required for invoking them.