- From: titi roman <dumitru.roman@deri.ie>
- Date: Tue, 2 Dec 2003 10:27:19 +0100
- To: <public-sws-ig@w3.org>, <www-rdf-rules@w3.org>
- Message-ID: <009d01c3b8b6$7ef240b0$330110ac@nwg.local>
Hi,
Suppose we have a simple service having as input the current location of a user and as output the nearest airport.
I suppose that the web service should describe what "nearest" means. A way to describe this, I think, is by using rules.
Probably the definition of "nearest" could be:
nearest(current_location, X):- airport(X),
airport(Y),
X =\= Y,
(location(X) - current_location) < (location(Y) - current_location).
Could anybody explain me how I can use OWL Rule Language [1] in specifying such a rule, taking
into account that in OWL Rule Language only variables that occur in the antecedent of a rule may occur in the consequent.
And one more thing: in OWL-S, a rule language should be deployed only for the reason that it may help in describing
preconditions and effects in a more comfortable way(i.e. not having to use for example in OWL-S Profile the definitions of
"preconditions" and "effect", but rather considering the rule:
_if a buyer has a valid Account and a valid Credit Card, then he can buy the book_
<!-- inputs to the service -->
<profile:Input rdf:ID="AcctID"/>
<profile:Input rdf:ID="Password"/>
<profile:Input rdf:ID="CreditCardNumber"/>
<profile:Input rdf:ID="ISBNNumber"/>
<!-- we need to define "Variables" to be used in rules-->
<owlr:Variable rdf:ID="_AcctID"/>
<owlr:Variable rdf:ID="_Password"/>
<owlr:Variable rdf:ID="_CreditCardNumber"/>
<owlr:Variable rdf:ID="_ISBNNumber"/>
<!-- specification that the inputs are the actual variables of the rule-->
<owlr:sameIndividualAtom>
<owlr:Variable rdf:ID="_AcctID"/>
<owlr:Variable rdf:ID="_Password"/>
<owlr:Variable rdf:ID="_CreditCardNumber"/>
<owlr:Variable rdf:ID="_ISBNNumber"/>
<profile:Input rdf:ID="AcctID"/>
<profile:Input rdf:ID="Password"/>
<profile:Input rdf:ID="CreditCardNumber"/>
<profile:Input rdf:ID="ISBNNumber"/>
</owlr:sameIndividualAtom>
<!-- the rule is defined-->
<owlr:Rule>
<!-the antecedent of the rule is defined-->
<owlr:antecedent rdf:parseType="Collection">
<owlr:individualPropertyAtom>
<owlr:propertyPredicate rdf:resource=accountExists/>
<owlr:argument1 rdf:about="_AcctID" />
<owlr:argument2 rdf:about="_Password" />
</owlr:individualPropertyAtom>
<owlr:individualPropertyAtom>
<owlr:propertyPredicate rdf:resource=creditExists/>
<owlr:argument1 rdf:about="_AcctID" />
<owlr:argument2 rdf:about="_CreditCardNumber" />
</owlr:individualPropertyAtom>
</owlr:antecedent>
<!-the consequent of the rule is defined-->
<owlr:consequent rdf:parseType="Collection">
<owlr:individualPropertyAtom>
<owlr:propertyPredicate rdf:resource=allowedToBuy/>
<owlr:argument1 rdf:about="_AcctID" />
<owlr:argument2 rdf:about="_ISBNNumber" />
</owlr:individualPropertyAtom>
</owlr:consequent>
<owlr:Rule>
) or for the reason that it gives more expressivity (if yes, please explain what this expressivity
means and how it is achieved or can be achieved).
Thank you,
Titi Roman
[1] http://www.daml.org/rules/proposal/rules-all.html
Received on Tuesday, 2 December 2003 04:31:00 UTC