- From: Drew McDermott <drew.mcdermott@yale.edu>
- Date: Thu, 16 Dec 2004 14:43:17 -0500
- To: "Camara Melgosa, Javier" <JCAMARA@softwareag.es>
- Cc: public-sws-ig@w3.org
> [Javier Camara]
>
> I have an scenario in which want to find out whether a person is working at
> a given date and time, i.e. isWorking(Person,Time) . There are two available
> services for performing this, one telling me whether isWorkingTime(Time) and
> other telling whether isOnHoliday(Person,Date). Thus, one can say that
>
> isWorking(Person,Time) == isWorkingTime(Time) & not
> isOnHoliday(Person,Date(Time) )
>
> Now, how would it be better to model this in OWL-S? Assuming the existing
> services have OWL-S descriptions including no effect and with respective
> outputs of isWorkingTime(Time) and isOnHoliday(Person,Date), I can see at
> least three options:
>
> 1) In the requester profile,specify a required output of
> isWorking(Person,Time) , and then define using OWL that
> isWorking(Person,Time) is equivalent to isWorkingTime(Time) & not
> isOnHoliday(Person,Date(Time) )
>
> 2) In the requester profile, directly specify a required output of
> isWorkingTime(Time) & not isOnHoliday(Person,Date(Time) )
>
> 3) Have the requester profile specifying an output of
> isWorking(Person,Time), and create a new composite process description whose
> output is isWorking(Person,Time) and whose model invokes the two existing
> services in a proper way
>
> I would choose option 1) , but it looks to me that most OWL-S processors
> would handle better option 3). Any opinion on this? Would option would be
> better? Are there other options?
I like option (1) as well, although I would try to be a bit more
precise in specifying the outputs and effects. What is requested is a
service such that invoking it will produce a boolean-literal output B
with effect "knows-value-is(client, isWorking(Person,Time), B)."
However, that doesn't address your main question.
I don't think an Owl-S processor's job is to figure out how to achieve
the requested goal. You need a planner with a reasoning engine clever
enough to infer that if P & Q <-> R, then one way to achieve
KG = knows-value(client, R) is to achieve
knows-value-is(client,P,true) & knows-value-is(client,Q, true)
OR
knows-value-is(client,P,false)
OR
knows-value-is(client,Q,false)
(omitting several important details). If we schematize this as
KG = ((KG1 & KG2) OR KG3 OR KG4)
then the planner must figure out that service 1 will achieve KG1 or
KG3, and service 2 will achieve KG2 or KG4, after which it will have
achieved KG.
--
-- Drew McDermott
Yale University
Computer Science Department
Received on Thursday, 16 December 2004 19:42:25 UTC