Web Service Composition using OWL-S

I am currently attempting to describe web services using OWL-S in such a way
that I can perform automatic web service composition.

Consider the following simple example.

Ontology
--------
Ontology has a class Person with properties ID1, ID2, Name, where ID1/ID2
are integer values and Name is a string.

Web Services
------------
Two web service operations exist which obtain ID2 given ID1 and Name given
ID2, ie:

int ID1toID2(int ID1)
String ID2toName(int ID2)

Composition
-----------
I want to generate a composition which given a person's ID1 returns their
Name.


Currently I am using a custom format to describe the web services using the
following rules:

	(?person hasData ID1) -> (?person hasData ID2)
	(?person hasData ID2) -> (?person hasData Name)

By defining statement (?person hasData ID1) I then test whether (?person
hasData Name) can be inferred (I am using the Jena generic rule reasoner for
this) and from the resulting derivation the sequence of calls required can
be determined.

I am now trying to describe the services using a standard format (OWL-S) but
am not really clear how this should be achieved.  The hasInput/Output
Process properties are defined with a parameterType which is either a class
or an XSD datatype, but what I want to do is define as a class/property
pair, eg. Person/ID1 otherwise a full semantic description of the parameter
is not possible.  Is this a limitation of OWL-S or a result of my
misunderstanding?

If I can achieve a satisfactory representation of the above simple case
within OWL-S, I have some more complex situations which need to be handled:

1) If their is a web service which requires ID1 of two people where the two
people are related (eg. person1 hasMother person2, where hasMother is a
further property added to the ontology), how could this be handled so that
the two different ID1 parameters can be distinguished.

2) If the web services operate on arrays instead of single values, eg:
	int[] Array_ID1toID2(int[] ID1)
	String[] Array_ID2toName(int[] ID2)
How can these services be handled distinctly from those above.

Any ideas are most welcome.

Thank you

Chris Parish




...................................................................................................

This message and any attachments may contain OCC confidential
or proprietary information. If you are an unintended recipient: 

(i) immediately delete the information contained herein and contact the author; and 
(ii) do not disclose, distribute, or duplicate any information from this message or any 
of its attachments.

Received on Thursday, 5 January 2006 03:38:59 UTC