<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Two-phase Semantic Web Service Discovery Method for Finding Intersection Matches using Logic Programming</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>László Kovács, András Micsik, Péter Pallinger MTA SZTAKI Computer and Automation Research Institute of the Hungarian Academy of Sciences Department of Distributed Systems</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Discovering Web Services based on logical matching of capabilities is a new requirement for Semantic Web Services which cannot be solved with traditional information retrieval (IR) techniques. Building fast and precise logical discovery engines is an ongoing challenge of the Semantic Web community. This paper presents the discovery engine implemented for the INFRAWEBS project which combines a traditional IR-based pre-filtering step and a logicbased matching implemented in Prolog. The logicbased step of discovery uses a novel technique based on Prolog-style unification of terms. This approach performs well in finding matches of intersection type, and it also provides possibilities to compare, rank and explain these matches.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Using Semantic Web Services is often broken into
the main steps of discovery, selection and execution.
Discovering Web Services based on logical matching
of capabilities is a new requirement for Semantic Web
Services which cannot be solved with traditional
information retrieval (IR) techniques. Building fast and
precise logical discovery engines is an ongoing
challenge of the Semantic Web community.</p>
      <p>
        In this paper we present the discovery engine
developed in the INFRAWEBS project of FP6. The
INFRAWEBS project develops an ICT framework,
which enables software and service providers to
generate and establish open and extensible
development platforms for Web Service applications.
The INFRAWEBS project divides the life-cycle of
Semantic Web Services in two different phases: Design
Time and Runtime. During the Design Time phase
various tools and editors support the creation of
semantic descriptions for existing Web Services. The
resulting ontologies, goals and Semantic Web Services
are made accessible in a distributed registry. WSML
[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] was chosen as the language for describing these
semantic entities. The runtime phase involves
discovery, selection and execution of the semantic web
services. The runtime environment also collects quality
of service data for semantic web services which are fed
back to the phase of discovery and selection.
      </p>
    </sec>
    <sec id="sec-2">
      <title>1.2. Discovery</title>
      <p>The discovery engine in our scenario receives a
WSML goal as input and it has to provide a list of
matching Semantic Web Services possibly coupled
with additional information that supports ranking and
selection.</p>
      <p>Discovery implementation has three steps: a
prefiltering step, a step for logical matching and a
finalizing step to prepare the result.</p>
      <p>The aim of the pre-filtering step is to narrow the list
of candidates using traditional text-processing
(keyword matching) algorithms.</p>
      <p>The logical matching is performed on the
precondition, assumptions, postcondition and effects of
the goal and service.</p>
      <p>In the final step the list of matching services are
enhanced with QoS data based on past execution
experience. QoS data is collected by another module of
the framework, and can be used for service selection.</p>
      <p>The rest of the paper describes the discovery
component implemented for the INFRAWEBS project
and compares it with related work.</p>
    </sec>
    <sec id="sec-3">
      <title>2. Keyword-based discovery</title>
    </sec>
    <sec id="sec-4">
      <title>3. Logical matching</title>
      <p>Each semantic web service and goal capability
definition may be seen as a structured text document.
This gives us the possibility for a preliminary selection
of Web Services using classical keyword-based
discovery, but at the level of ontology concepts.</p>
      <p>
        The WSMO deliverable on discovery [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] suggests
the keyword-based approach to be used in conjunction
with the keywords given by capability editors and
listed as non-functional properties (metadata about web
services). However, the correctness and quality of such
natural language descriptions are hard to ensure and
control. Empty or faulty descriptions make services
inaccessible, even when their capabilities are defined
correctly. Multilinguality of metadata is another
problem of this solution.
      </p>
      <p>Our approach is different from the WSMO idea,
because here the axioms are indexed instead of the
non-functional properties. The proper formulation of
the axioms is needed for the correct use of Semantic
Web Services, therefore the quality of the index data is
implicitly ensured.</p>
      <p>
        It is obvious that the result of keyword-based
discovery may contain semantically non-matches (e.g.
the capability for selling tickets everywhere except to
Budapest). The key criterion is not to filter out any
good semantic match in this phase. In [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] we show that
by simple conditions on the ontology structure this can
be guaranteed. For example, in case of a single
homogeneous set of ontologies, the description of each
relevant capability requires the use of certain concepts;
therefore the goal and service capabilities must both
contain these concepts.
      </p>
      <p>The advantage is the very good response time
compared to logic reasoning, while the disadvantage is
that logically incorrect results are also collected.
Therefore, this operation is ideal for a so-called
prefiltering, to reduce the number of web services for
which the time-consuming logical matching has to be
calculated.</p>
      <p>The Organisational Memory (OM) component of
the INFRAWEBS framework is specialized on textual
queries. Its main role is to index all available textual
documents with respect to web services, including
WSDL and WSML. With its indexes OM helps the
creators of Semantic Web Services to find relevant or
similar information for the semantic modelling of web
services. In the INFRAWEBS framework the
functionality of OM is used in the pre-filtering step,
but another version is implemented using Apache
Lucene (Apache’s text search engine library) as well.</p>
      <p>
        The WSMO deliverable on discovery [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] defines
semantic matching as:
      </p>
      <p>W , G, O |= ∃x( g ( x) ∧ ws( x))
where W is the definition of the web service, G is the
definition of the goal, O is a set of ontologies to which
both descriptions refer, g(x) and ws(x) are the
firstorder formulae describing the effects of the goal and
web service respectively. In this case only the desired
and offered outcomes are matched, and the meaning of
the match is: there exists an outcome offered by the
service which is requested by the user. This definition
can be further elaborated into various types of matches:
• Exact match: the possible outcomes of the service
and the goal are equivalent; the service does
exactly what the user desires.
• Subsumption match: each possible outcome of the
service is accepted by the goal, i.e. all service
offers are acceptable by the user, though there
might be desires not covered by the service.
• Plugin match: each possible outcome requested
by the goal can be produced by the service, i.e. all
user requests can be satisfied by the service,
although the service may provide additional,
nonmatching outcomes as well.
• Intersection match: there is at least one service
outcome accepted by the user (goal).</p>
      <p>This section details the practical problems of semantic
matching. Theoretically both Description Logic and
Logic Programming (the most popular and available
variations of logic in this area) are capable to find all
the types of matches listed above. However, the
assumption based on our real-life scenarios is that the
majority of matches will be of type intersection.</p>
      <p>
        A method for finding intersection matches using
Description Logic is described in [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], but its
application in case of long and complex capability
descriptions is problematic. For example, it requires
that unrelated concepts are defined as disjoint pair
wise. Overall, the matching process needs complex DL
modelling which is hard to maintain. Using
Description Logic it is decidable whether there is a
common solution for the goal and the service, but it
cannot tell what the solution is. More details on our
experiments with using Description Logic for service
matching are published in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>Logic Programming can tell what the common
solution is if it is able to find it. Let's take two very
simple example conditions:
Goal:</p>
      <p>Ticket from Wien to Graz</p>
      <p>Ticket date 06.06.2006.</p>
      <p>Webservice:</p>
      <p>Ticket from X to Y</p>
      <p>where X and Y are in Austria</p>
      <p>
        Ticket issued by Austrian Air
This example roughly corresponds to the WSMO
Virtual Travel Agency use case [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], and also agrees
with the INFRAWEBS project use cases [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        For humans this seems a perfect match. If we model
the outcome with a set of tickets according to the
setbased modelling approach [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], it is clear that there can
be tickets fulfilling all conditions. But in the world of
logic, there is no implication in either direction
between the goal and web service. The goal is
specialized in details of desired service, while the web
service is specialised in details of service delivery.
      </p>
      <p>A further problem is that both goal and service
descriptions may vary in the level of detail. For
example, sometimes the destination or the date is
omitted, sometimes more conditions are given, for
example to have a business class ticket.</p>
      <sec id="sec-4-1">
        <title>Goal</title>
        <sec id="sec-4-1-1">
          <title>Ticket from Wien to Graz Ticket date 06/06/2006</title>
          <p>Matching, X,Y unified
with Wien, Graz</p>
          <p>True for X=Wien</p>
          <p>True for Y=Graz
No contradiction
No contradiction</p>
        </sec>
      </sec>
      <sec id="sec-4-2">
        <title>Web service</title>
        <sec id="sec-4-2-1">
          <title>Ticket from X to Y</title>
        </sec>
        <sec id="sec-4-2-2">
          <title>X is in Austria</title>
        </sec>
        <sec id="sec-4-2-3">
          <title>Y is in Austria</title>
        </sec>
        <sec id="sec-4-2-4">
          <title>Ticket issued by Austrian Air</title>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>3.1. Semantic matching using Logic</title>
    </sec>
    <sec id="sec-6">
      <title>Programming</title>
      <p>Our solution applies the unification facility of
Prolog engines. If we find matching terms within the
goal and the web service, we can use this information
to decide on the matching. A schematic explanation of
unification can be found in Figure 1. The goal in the
figure describes a request for a ticket from Wien to
Graz for a given date, while the service advertises
Austrian Air flight tickets within Austria. The ticket
departure and destination facts are unified in the goal
and the web service, with the consequence that X
becomes Wien and Y becomes Graz. After that,
whether X and Y are in Austria can be decided. The
last two facts have no correspondence on the other
side, therefore they cannot generate any contradiction,
and they can be silently ignored.</p>
      <p>In order to reach a comparable list of terms some
kind of normalized form is needed, of which the
Disjunctive Normal Form (DNF) was the most
suitable, as it represents the set of simple capabilities
(desires or effects). The DNF consists of clause sets in
the form of (C11 and C12 and … ) or… (Cm1 and Cm2
and …), where Cij are atomic terms. We call Cij a
clause, and (C11 and C12 and … C1n) a clause set. A
DNF is true if at least one clause set is true. A DNF
clause set is true if all its clauses are true. This means
that a clause set provides a complete solution if all its
clauses are true.</p>
      <p>The pre-processing steps needed to create the
infrastructure for matching:
• Ontologies are converted to Prolog. Special
predicates are used to represent subconcept,
attribute and attribute type relationships within
concepts.
o Web services are converted to DNF with the
internal steps of:
o Replacing logical constructs such as
implication or equivalence with an equivalent
form using only conjunction, disjunction and
negation,
o Conversion into</p>
      <p>(NNF),
o Elimination of forall and exists constructs,
skolemization,</p>
      <p>Negation</p>
      <p>Normal Form
o Moving disjunctions to the outermost level to
reach DNF.</p>
      <p>The pseudo-code shows a simplified version of this
matching algorithm:
• DNF clause sets are converted to Prolog.</p>
      <p>Membership molecules of WSML are converted
to type/2 predicates and hasValue molecules are
represented with attr/3 predicates.</p>
      <p>An example of generated Prolog clauses is given for a
service providing flights from Innsbruck to Wien:
type(V_FlightPrefs,
flightBookingPreferences),
attr(V_FlightPrefs, start, V_Start),
=(V_Start, innsbruckAirport),
attr(V_FlightPrefs, end, V_End)
=(V_End, wienAirport),
attr(V_FlightPrefs, class, V_Class),
type(V_Buyer, buyer),
attr(V_Buyer, contactInformation,
V_BuyerContact),
attr(V_BuyerContact, emailaddress,
V_BuyerEmail),
type(V_BuyerEmail, string)</p>
      <p>When the system is initialized, the following steps
are needed for discovery with a given goal:
• The goal is converted first to DNF and then to
Prolog the same way as web services, the result is
a Prolog list of clause sets for each condition in
the goal capability,
• The matching algorithm is run: an attempt is
made to match each web service with the goal,
• The result is a list of matching services which is
ranked before it is sent to the user.</p>
      <p>As part of the matching algorithm, in order to match
the postconditions of the web service and the goal we
need to find a matching between the DNF clause sets
representing postconditions. The steps to be performed
for each pair of clause sets (one from the goal and one
from the web service) are:
• Unification of clauses in the clause sets: two
clauses are unified if they have the same
signature, then corresponding variables in the two
clauses are unified,
• Labelling each clause: matched, failed or ignored,
• Decision of match or failure,
• Generation of matching result (with lists of failed,
ignored and matched facts attached).
% both inputs are lists of clauses
match(Goal, Webservice)
:% perform possible unifications
unify(Goal, Webservice, UnifiedClauses),
% classify each clause/term in goal as
% matched/failed/ignored
checkClauses(Goal, UnifiedClauses,
MatchedInGoal, IgnoredInGoal,</p>
      <p>FailedInGoal),
% classify each clause in service as
% matched/failed/ignored
checkClauses(Webservice, UnifiedClauses,
MatchedInService, IgnoredInService,
FailedInService),
% decide on matching
isMatching(MatchedInGoal, IgnoredInGoal,</p>
      <p>FailedInGoal),
isMatching(MatchedInService,</p>
      <p>IgnoredInService, FailedInService).
unify([G|Goal],Webservice,M2)
:(if member(G, Webservice) then</p>
      <p>M2=[G|M1] else M2=M1),
unify(Goal,Webservice,M1).
unify([],_,[]).
checkClauses([Clause|ClauseSet],</p>
      <p>UnifiedClauses,</p>
      <p>Matched2, Ignored2, Failed2)
:check(Clause, UnifiedClauses, Status),
(if Status=m then</p>
      <p>Matched2=[Clause|Matched2] else</p>
      <p>Matched2=Matched1),
(if Status=i then</p>
      <p>Ignored2=[Clause|Ignored2] else</p>
      <p>Ignored2=Ignored1),
(if Status=f then</p>
      <p>Failed2=[Clause|Failed2] else</p>
      <p>Failed2=Failed1),
checkClauses(ClauseSet, UnifiedClauses,</p>
      <p>Matched1, Ignored1, Failed1).
checkClauses([],_,[],[],[]).</p>
      <p>The detailed explanation of the algorithm is given
below. First, all possible unifications are made by the
unify predicate. Second, the algorithm has to examine
all clauses in the clause set with the effects of
unifications made. If the clause yields true value after
the unification, it is labelled as matched. If the clause is
not true, but all its variables are bound, it is labelled as
failed. False clauses with free variables mean that the
condition they represent is not specified in the other
clause set, therefore they are labelled as ignored.</p>
      <p>Finally, the algorithm has to decide whether the
goal and the web service match each other. If there is a
failed clause, it means a disagreement of the goal and
service, so there is no match. If there are only matched
and ignored clauses, then a little heuristics is needed to
decide about the match. As a primary rough heuristics
we say there is a match if the number of matched
clauses is greater than the number of ignored clauses.</p>
      <p>In fact this is a problem of WSML capabilities: it is
very hard to tell which variables represent essential,
basic service issues and which variables are just to help
describe conditions. Figure 1 shows two facts at the
bottom which can be safely ignored. It can also happen
that the service and the goal are totally different except
they share the conditions of payment or confirmation
(for example). In this case the matching result will not
contain failed facts, just a lot of ignored clauses (the
essential service requested) and a lot of matched
clauses (the not so important buying conditions). If
there are no failed facts, the decision of matching
cannot be completely sure. Conventions are suggested
to by-pass this shortcoming. One such agreement can
be to define a basic service outcome or service class in
each postcondition or effect.</p>
      <p>The list of matching services should be ranked to
provide guidance for the user in selection. The usual
solution is to rank the list by some kind of quality
aspect or by the categories of exact, subsume, plugin
and intersection match. The algorithm introduced here
provides the new possibility of ranking based on the
number of ignored clauses. Clauses can be ignored on
both the service and the goal side. Clauses ignored on
the goal side means certain conditions are not defined
in the service (e.g. departure date, comfort seats), so a
lower number of ignored facts mean more precise
fulfilment of user desires. Clauses ignored on the
service side means something additional which is not
specified in the goal (e.g. more travel information,
company data, etc.).</p>
      <p>The judgement of these is highly subjective, but a
lower number of ignored facts may also mean a more
accurate match here. In our implementation we rank by
the sum of ignored facts in both service and goal.
Another possible approach is to rank first by the
number of ignored facts in the goal, and then by the
number of ignored facts in the service.</p>
      <p>Modelling user preferences and added value in
discovery is an emerging new problem in this area. The
presented matching algorithm can handle the added
value in requests and offers as demonstrated in the
following example. The goal postcondition declares
that the flight is business class. If the service says
nothing about the class, then this requirement is
ignored by the matching algorithm. If the service offers
only economy class, then the matching fails. If the
service declares that it can provide both economy and
business class tickets, then the corresponding fact is
matched in the goal, and therefore the service gets a
higher position in the ranked result list.</p>
      <p>The presented algorithm can thus handle user
preferences and provide a ranking based on it, if there
is a way to differentiate between clauses modelling
core postcondition and clauses modelling user
preferences in the goal. Currently, we see the only
solution to use axioms completely separated from the
goal to express user preferences.</p>
      <p>For matching preconditions and assumptions we can
use a simpler matching mechanism as expressions have
to be fully enforced there: a clause is either matched or
failed. Facts from the goal are inserted into the
knowledge base, and the clause sets (in DNF) of the
service precondition and assumption are checked
oneby-one. In this way not only the failure is detected but
also the failing clauses can be identified and presented
to the user.</p>
    </sec>
    <sec id="sec-7">
      <title>3.2. Implementation and Performance</title>
      <p>The matching algorithm was implemented in
Prolog, and was tested with SWI-Prolog. The
discovery engine is written in Java, which initializes
the Prolog implementation, and feeds the WSML
descriptions for ontologies and web services into it.
Then, for each discovery request only the goal is
converted into Prolog and the matching algorithm is
run.</p>
      <p>Further software components used in the
implementation are wsmo4j for parsing WSML files
and Interprolog for making Prolog queries from Java.</p>
      <p>The matching algorithm has the following costs for
each step (where goal has L clauses and service has M
clauses):
• Unification of clauses: at most L*M operations,
• Checking each clause: L+M operations,
• Decision of match or failure: constant number of
operations.</p>
      <p>So the matching of one goal clause set with one
service clause set takes approximately (L+1)*(M+1)
operations. If we take the natural assumption that the
number of clauses has an upper limit m in the system
(an upper limit for L and M), and the maximal number
of clause sets representing a service or a goal has an
upper limit c, we get the estimation that the order of
complexity of the discovery algorithm is linear with
respect to the number of services in the system.</p>
      <p>The performance tests were based on the project use
case; a frequent flyer system offering bonus flights,
hotel stays and car rentals. The test environment
contained 18 ontologies, 25 different web services and
10 different goals. In order to get more services for the
tests, multiple copies were generated from each
service.</p>
      <p>The Prolog matcher on a 1.6 GHz P4 desktop PC
provided the following response times:
250 services:
1000 services:
4000 services:
8000 services:</p>
      <p>In the first experiment the number of services was
25, and the per service discovery time (the total time
needed for discovery measured in the Java VM divided
by the number of services checked for matching)
varied between 12 and 103 milliseconds, depending on
the complexity of the goal capability. In our next
experiment the number of web services was increased
to 250 in the same environment. The per service
discovery time in the second experiment varied
between 12 and 129 milliseconds.</p>
      <p>Overall, the response time perceived by the user is
between 3 and 25 seconds. This is acceptable for the
project as the pre-filtering step is assumed to reduce
the number of services in this second step of discovery
to the magnitude of 2-300 services.</p>
      <p>The following conclusions can be drawn from the
response times:
• The native Prolog implementation needs only a
couple of milliseconds to match a web service
and a goal. This is scalable until the magnitude of
1000 services (result within 5 seconds), which is
satisfying if we consider the pre-filtering step as
well.
• There is a bottleneck in the communication
between Java and Prolog. We will experiment
with other possible communication methods.
• Little effort was spent on code optimization, and
we think the speed of discovery can still be
increased.</p>
      <p>Currently there is little information available about
the performance of other discovery implementations.
We think the proposed and implemented solution is
comparable in effectiveness and correctness to the few
other approaches. The solution can be used generally,
and it is also able to provide some explanation of the
match or failure, which can be presented to the user.</p>
      <p>In order to provide an interface for testing and
experimenting, a web-based test bed has been
implemented for the discovery component. This test
bed includes not only the software but example data as
well.</p>
      <p>The test bed is available as an online service of
SZTAKI, it can be reached from the demonstrations
page of the INFRAWEBS project website:
http://www.infrawebs.eu.</p>
    </sec>
    <sec id="sec-8">
      <title>Related work</title>
      <p>
        The early experiments to implement matching
algorithms with Logic Programming are mostly done
using Flora-2, a reasoner supporting F-logic
[
        <xref ref-type="bibr" rid="ref19">19</xref>
        ][
        <xref ref-type="bibr" rid="ref20">20</xref>
        ][
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. The syntax of the Flora-2 language is
very close to WSML, which alleviates language
conversion.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] and [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] the matching is based on the
discovery model in Transaction Logic [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. After
precondition matching, the service postcondition is
assumed to be true (inserted into the knowledge base),
and the fulfilment of goal postcondition is checked.
Finally, the inserted facts are retracted from the
knowledge base, and the matching of next service can
be started. The matching is done in the traditional way,
checking the truth value of the goal postcondition. This
leads us to the matching problem detailed in section 3,
namely, the postcondition of a matching service does
not imply the goal postcondition. This solution works
if goals are prepared by parameterizing goal templates,
but it does not support custom goals and the discovery
functionality needed for service composition.
      </p>
      <p>
        There are several proof-of-concept experiments for
SWS discovery using WSMO, but relatively few
complete implementations. Della Valle et al. have
created a complete discovery solution based on
mediators [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. It is used in Glue, a lightweight
implementation of their suggested execution
framework for Semantic Web Services. Glue uses
predefined goals (goal templates), which can be
parameterized by the user for her actual request. A
wgMediator [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] is used to find matching web services
for a specific goal. Therefore, the (simplified) steps of
discovery are:
• Parameterize a pre-defined goal,
• Find the wgMediator for that pre-defined goal,
• The wgMediator returns matching services for the
goal.
      </p>
      <p>The advantages of this approach are:
• Efficient solution which is also easy to
implement,
• Straightforward support for mediation between
heterogeneous ontologies using ooMediators and
ggMediators.</p>
      <p>The disadvantages of this approach are:
• Goals can only be created based on pre-defined
goals. If the user’s desire does not match any of
the pre-defined goals, she has no choice to find
matching services,
• The maintenance of pre-defined goals needs
continuous effort from the operators of the
discovery engine. If composite goals are
supported, the number of pre-defined composite
goals to be created and maintained may reach a
huge number.</p>
      <p>
        OWL-S is probably the most known approach
currently for Semantic Web Services. In OWL-S a
service can be specified with inputs and outputs, but
also with pre- and postconditions. The typical
discovery solutions using OWL-S [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ][
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] match the
user’s input with the service input and the service
output with the user’s desired outcome. This means
that all concepts required by the service as input need
to match with a concept provided as user input, and all
concepts required by the user as output match with a
concept in the service output. The schematic process of
such discovery contains the following steps:
• Locate services with matching input and output
o For each input concept of the service, find a
matching input concept provided by the user
o For each output concept required by the user,
find a matching output concept of the service
The advantages of this approach are:
• Simple matching algorithm, required reasoning is
minimal
• Fast implementations are possible using indexed
search
      </p>
      <p>The disadvantage of this approach is that matching
is based solely on inputs and outputs, and the effects of
service execution are ignored, so there is no guarantee
that the matching service has the desired effect. (As an
example: a service with an input of type document and
an output of type document might perform rather
different tasks on the document.)</p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] a peer-to-peer environment is described for
WSMO-based semantic discovery. The system
(supported by the DIP project) contains several
novelties, such as decentralized discovery and
QoSbased matching. Here we concentrate on the method of
discovery. The paper provides minimal information
about the logic-based matching applied in the system.
Logic-based matching is preceded by a filtering step,
when irrelevant services are filtered out, and the
logicbased matching is only applied on a small set of
services. The rationale is similar to that of the
INFRAWEBS project: logic-based matching is
expensive, and it is needless to run the expensive
algorithms on services which have no chance to match
with the goal. The concepts are classified into concept
groups, and services and goals are associated with
concept groups based on concepts mentioned in the
capability. Keys are calculated for both services and
goals which summarize the concept groups used in the
capability descriptions.
      </p>
      <p>According to the authors the necessary condition for
a service to match with a goal is that its description at
least must contain all concepts related to those
specified in the goal. We saw in the previous sections
that this assumption for matching is not necessarily
true. For example, a goal may contain date constraints
while services usually say nothing about dates. The
creators of the system admit that for partial
matchmaking some concepts has to be discarded from
the goal in the filtering phase, and GUI tools would
help users in doing this. As a comparison of this
approach and INFRAWEBS discovery we outline the
following:
• Both projects use a filtering phase before the
logic-based matching, but the filtering rules used
in INFRAWEBS are less restrictive.
• QoS data is used to define criteria for matching in
this work, while INFRAWEBS uses QoS data for
ranking the list of matching services.</p>
    </sec>
    <sec id="sec-9">
      <title>Conclusion</title>
      <p>In this paper we have presented the implementation
of the Discovery Component of the SWS environment
created by the INFRAWEBS project.</p>
      <p>The matching algorithm selected for discovery
combines a traditional IR-based pre-filtering step and a
logic-based matching implemented in Prolog. The
logic-based step of discovery uses a novel technique
based on Prolog-style unification of terms. This
approach is able to find intersection and other types of
service matches, and also provides possibilities to
compare, rank and explain service matches (or
nonmatches). The performance of the solution is
satisfactory within the project scenario. In the lack of
performance details of other solutions it is hard to
compare the presented implementation with other
discovery engines.</p>
      <p>A test bed is available online for the demonstration
of the approach. It can be reached from the
demonstrations page of the INFRAWEBS project
website.</p>
      <p>Acknowledgement The presented work was supported
by the INFRAWEBS project funded by the European
Commission.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Alejandro</given-names>
            <surname>López</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Jesús</given-names>
            <surname>Gorroñogoitia</surname>
          </string-name>
          .
          <source>Deliverable D11.1.2 INFRAWEBS Software Development Process.</source>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>Alejandro</given-names>
            <surname>López</surname>
          </string-name>
          , Jesús Gorroñogoitia.
          <article-title>DS2 Activity definition</article-title>
          .
          <source>INFRAWEBS Document.</source>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>Alejandro</given-names>
            <surname>López</surname>
          </string-name>
          .
          <article-title>DD2 Component interface description</article-title>
          .
          <source>INFRAWEBS Document.</source>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Chris</given-names>
            <surname>Preist</surname>
          </string-name>
          .
          <article-title>A conceptual architecture for semantic web services</article-title>
          .
          <source>In Proceedings of the International Semantic Web Conference 2004 (ISWC</source>
          <year>2004</year>
          ),
          <year>November 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Web</given-names>
            <surname>Services</surname>
          </string-name>
          <article-title>Glossary</article-title>
          .
          <source>W3C Working Group Note 11 February</source>
          <year>2004</year>
          . http://www.w3.org/TR/2004/NOTE-wsgloss-
          <volume>20040211</volume>
          /
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>O.</given-names>
            <surname>López</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Riceputi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>López</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Pezuela</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Gorroñogoitia</surname>
          </string-name>
          .
          <source>INFRAWEBS Deliverable 10.1-2-3-4.1 Requirement Profile</source>
          <volume>1</volume>
          &amp;
          <string-name>
            <given-names>Knowledge</given-names>
            <surname>Objects</surname>
          </string-name>
          .
          <source>2005 Nov</source>
          <volume>10</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Ettore</given-names>
            <surname>Riceputi</surname>
          </string-name>
          .
          <source>Deliverable D10.5-6-7.2 Requirement Profile</source>
          <volume>2</volume>
          &amp;
          <string-name>
            <surname>Knowledge</surname>
            <given-names>Objects</given-names>
          </string-name>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>J.</given-names>
            <surname>Scicluna</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Haselwanter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Polleres</surname>
          </string-name>
          .
          <source>INFRAWEBS Deliverable D7</source>
          .
          <fpage>1</fpage>
          -
          <issue>2</issue>
          .1
          <string-name>
            <given-names>Reduced</given-names>
            <surname>Rule</surname>
          </string-name>
          <string-name>
            <given-names>Base</given-names>
            , QoS Metrics,
            <surname>Running</surname>
          </string-name>
          <string-name>
            <surname>SWS</surname>
          </string-name>
          -E and QoSBroker.
          <source>2005 Aug 15</source>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Cs. Fülöp</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Kovács</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Micsik</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          <string-name>
            <surname>Tóth</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Agre</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Polleres</surname>
          </string-name>
          .
          <source>INFRAWEBS Deliverable D6</source>
          .
          <fpage>1</fpage>
          -
          <issue>2</issue>
          .1: Specification &amp; Realisation
          <string-name>
            <surname>User-Interface</surname>
            <given-names>Agent</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Discovery</given-names>
            <surname>Agent</surname>
          </string-name>
          .
          <source>Nov</source>
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Micsik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Kovács</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Tóth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Pallinger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Scicluna</surname>
          </string-name>
          .
          <source>INFRAWEBS Deliverable D6.2</source>
          .2 - Specification &amp;
          <article-title>Realisation of the Discovery Component</article-title>
          .
          <source>Aug</source>
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <fpage>D5</fpage>
          .
          <year>1v0</year>
          .
          <article-title>1 WSMO Web Service Discovery</article-title>
          .
          <source>WSML Working Draft 12 11</source>
          <year>2004</year>
          , http://www.wsmo.org/
          <year>2004</year>
          /d5/d5.1/v0.1/20041112/
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Ruben</surname>
            <given-names>Lara:</given-names>
          </string-name>
          <article-title>KnowledgeWeb Deliverable 2.4.2 Semantics for Web Service Discovery and Composition</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>A.J.</given-names>
            <surname>Bonner</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Kifer</surname>
          </string-name>
          .
          <article-title>A logic for programming database transactions</article-title>
          . In J. Chomicki and G. Saake, editors,
          <source>Logics for Databases and Information Systems, chapter 5</source>
          , pages
          <fpage>117</fpage>
          -
          <lpage>166</lpage>
          . Kluwer Academic Publishers,
          <year>March 1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <fpage>D16</fpage>
          .
          <year>1v0</year>
          .
          <article-title>3 The Web Service Modeling Language WSML</article-title>
          .
          <source>WSML Working Draft 5 October</source>
          <year>2005</year>
          , http://www.wsmo.org/TR/d16/d16.1/
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>Web</given-names>
            <surname>Service Modeling Ontology Primer</surname>
          </string-name>
          .
          <source>W3C Member Submission 3 June</source>
          <year>2005</year>
          , http://www.w3.org/Submission/WSMO-primer/
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>WSMX</given-names>
            <surname>Deliverable</surname>
          </string-name>
          <article-title>D10 v0.2, Semantic Web Service Discovery</article-title>
          .
          <source>WSMX Working Draft October 3</source>
          ,
          <fpage>2005</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          <source>[17] D3.3 v0</source>
          .1
          <string-name>
            <given-names>WSMO</given-names>
            <surname>Use</surname>
          </string-name>
          <article-title>Case "Virtual Travel Agency"</article-title>
          .
          <source>WSMO Working Draft 19 November</source>
          <year>2004</year>
          , http://www.wsmo.
          <source>org/2004/d3/d3.3/v0.1/</source>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>Lei</given-names>
            <surname>Li</surname>
          </string-name>
          and
          <string-name>
            <given-names>Ian</given-names>
            <surname>Horrocks</surname>
          </string-name>
          .
          <article-title>A software framework for matchmaking based on semantic web technology</article-title>
          .
          <source>In Proceedings of the 12th International Conference on the World Wide Web</source>
          , Budapest, Hungary, May
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>Michael</given-names>
            <surname>Kifer</surname>
          </string-name>
          , Ruben Lara,
          <string-name>
            <given-names>Axel</given-names>
            <surname>Polleres</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Chang</given-names>
            <surname>Zhao</surname>
          </string-name>
          , Uwe Keller, Holger Lausen and
          <string-name>
            <given-names>Dieter</given-names>
            <surname>Fensel</surname>
          </string-name>
          .
          <article-title>A Logical Framework for Web Service Discovery</article-title>
          .
          <source>Proceedings of the ISWC 2004 Workshop on Semantic Web Services: Preparing to Meet the World of Business Applications</source>
          , Hiroshima, Japan, November 8,
          <year>2004</year>
          .
          <source>CEUR Workshop Proceedings, ISSN 1613-0073</source>
          , Vol-
          <volume>119</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>WSML</given-names>
            <surname>Deliverable</surname>
          </string-name>
          <article-title>D5.1 v0.1 Inferencing Support for Semantic Web Services: Proof Obligations</article-title>
          .
          <source>WSML Working Draft - August 2</source>
          ,
          <fpage>2004</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>Emanuele</given-names>
            <surname>Della</surname>
          </string-name>
          <string-name>
            <surname>Valle</surname>
          </string-name>
          , Dario Cerizza,
          <string-name>
            <given-names>Irene</given-names>
            <surname>Celino</surname>
          </string-name>
          .
          <article-title>The mediators centric approach to Automatic Web Service Discovery of Glue</article-title>
          .
          <source>First International Workshop on Mediation in Semantic Web Services: MEDIATE</source>
          <year>2005</year>
          , Amsterdam, Netherlands, December
          <volume>12</volume>
          2005
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Massimo</surname>
            <given-names>Paolucci</given-names>
          </string-name>
          , Takahiro Kawamura,
          <string-name>
            <surname>Terry R. Payne</surname>
            ,
            <given-names>Katia</given-names>
          </string-name>
          <string-name>
            <surname>Sycara</surname>
          </string-name>
          .
          <source>Semantic Matching of Web Services Capabilities. International Semantic Web Conference 2002. In: Lecture Notes in Computer Science</source>
          , Volume
          <volume>2342</volume>
          ,
          <string-name>
            <surname>Jan</surname>
            <given-names>2002</given-names>
          </string-name>
          , Page 333
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Michael</surname>
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Jaeger</surname>
            , Gregor Rojec-Goldmann, Gero Mühl, Christoph Liebetruth,
            <given-names>Kurt</given-names>
          </string-name>
          <string-name>
            <surname>Geihs</surname>
          </string-name>
          .
          <article-title>Ranked Matching for Service Descriptions using OWL-S. In Kommunikation in verteilten Systemen (KiVS</article-title>
          <year>2005</year>
          ), Informatik Aktuell, Kaiserslautern, Germany,
          <year>February 2005</year>
          . Springer.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Le-Hung</surname>
            <given-names>Vu</given-names>
          </string-name>
          , Manfred Hauswirth, Fabio Porto,
          <string-name>
            <given-names>Karl</given-names>
            <surname>Aberer</surname>
          </string-name>
          .
          <article-title>A Search Engine for QoS-enabled Discovery of Semantic Web Services</article-title>
          .
          <source>International Journal of Business Process Integration and Management</source>
          ,
          <year>2006</year>
          , to be published.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>