- From: Drew McDermott <drew.mcdermott@yale.edu>
- Date: Tue, 4 Nov 2003 10:54:20 -0500 (EST)
- To: monika@dmu.ac.uk
- Cc: daml-process@bbn.com, www-ws@w3.org
[Monika Solanki] I am not sure, if this should be sent on www-ws, hence I am sending this only to the private list. David, pls let me know further.] I think it should be on www-ws, and am sending it there. ***** I have been trying to use the OWL Rule language, http://www.cs.man.ac.uk/~horrocks/DAML/Rules/ for expressing the semantics of preconditions and effects in OWL-S. ***** This is the first attempt at expressing preconditions as rules for the Congo Example. ***** Feedbacks highly solicited. ***** IN ORL (Owl Rule language), rules can be expressed as implications consisting of an antecedent and consequent. The preconditions that we have for Congo Example are ** Account Exists ** Credit Exists Semantically, the rule can be defined as, if a buyer has a valid Account and a valid Credit Card, he can buy a book from Congo. So, we have as inputs to the book buying service, the following variables 1. Acct ID 2. Password 3. Creditcard Number 4. ISBN Number Corresponding Input Classes, <process:Input rdf:ID="AcctID"/> <process:Input rdf:ID="Password"/> <process:Input rdf:ID="CreditCardNumber"/> <process:Input rdf:ID="ISBNNumber"/> In ORL, we have to define "Variable" to be used in Rules. <owl:Variable rdf:ID="AcctID"/> <owl:Variable rdf:ID="Password"/> <owl:Variable rdf:ID="CreditCardNumber"/> <owl:Variable rdf:ID="ISBNNumber"/> In our case the Input Classes are themselves variables. So we can write something like this, <owl:sameIndividualAtom> <process:Input rdf:ID="AcctID"/> <process:Input rdf:ID="Password"/> <process:Input rdf:ID="CreditCardNumber"/> <process:Input rdf:ID="ISBNNumber"/> <owl:Variable rdf:ID="AcctID"/> <owl:Variable rdf:ID="Password"/> <owl:Variable rdf:ID="CreditCardNumber"/> <owl:Variable rdf:ID="ISBNNumber"/> </owl:sameIndividualAtom> Now, we can define the rule as, <!-- here the namespace congoUserProfile, holds the definition of classes and properties pertaining to a user of Congo --> <owl:Rule> <owl:antecedent rdf:parseType="Collection"> <owl:individualPropertyAtom> <owl:propertyPredicate rdf:resource="&congoUserProfile;accountExists/> <owl:argument1 rdf:about="#AcctID" /> <owl:argument2 rdf:about="#Password" /> </owl:individualPropertyAtom> <owl:individualPropertyAtom> <owl:propertyPredicate rdf:resource="&congoUserProfile;creditExists/> <owl:argument1 rdf:about="#AcctID" /> <owl:argument2 rdf:about="#CreditCardNumber" /> </owl:individualPropertyAtom> </owl:antecedent> <owl:consequent rdf:parseType="Collection"> <owl:individualPropertyAtom> <owl:propertyPredicate rdf:resource="&congoUserProfile;allowedToBuy/> <owl:argument1 rdf:about="#AcctID" /> <owl:argument2 rdf:about="#ISBNNumber" /> </owl:individualPropertyAtom> <owl:Rule> ***** Does this make sense ? The last bit does. I don't know what the "sameIndividualAtom" stuff is. ***** I would also like to discuss, if using rules in this way, helps in avoiding the use of rdf notations (DRS) for expressing logical formulae I don't understand. The OWL Rule language _is_ RDF, at least syntactically. It appears to use exactly the same tricks as DRS. OWL Rule Language's "IndividualPropertyAtom" has precisely the same syntax and semantics as DRS's "Atomic_formula." The only differences between DRS and ORL are (a) the way variables are handled; (b) the restriction in OWL Rules to unary or binary predicates. My assumption is that OWL-S should use ORL if at all possible simply because it is going to be the standard. There may be a slight problem using ORL for preconditions and effects, because the former is like a rule with no consequent, and the latter like a rule with no antecedent; but we can use some ad hoc extension of ORL until the gods invent a notational variant of it and declare it to be elegant. -- -- Drew McDermott Yale Computer Science Department
Received on Tuesday, 4 November 2003 10:54:22 UTC