Re: Attempt to use Owl rule language to express preconditions in Congo

   [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