RE: Expressing operators and functions in RDF

Hi,

Thank for your example and ontology. It is very interesting.  I would
like to have opinions of the participants of this mailing list about how
to express operators in RDF. I can distinguish two approaches: the CWM
approach (relation as Property)
(http://www.w3.org/2000/10/swap/doc/Built-In.html) versus your approach
(relation as subject). Are they opposite/incompatible approach or is
there any way to conciliate both ? Which one requires less parsing work
? Mathematically, I think the CWM approach seems more correct. Where can
I find more resources discussing this issue ? Is there any ontology
developed using the CWM approach ?


Best regards
 
Stephane Fellah
Senior Software Engineer
 
PCI Geomatics
490, Boulevard St Joseph
Hull, Quebec
Canada J8Y 3Y7
Tel: 1 819 770 0022 Ext. 223
Fax 1 819 770 0098
Visit our web site:  www.pcigeomatics.com
 


-----Original Message-----
From: Drew McDermott [mailto:drew.mcdermott@yale.edu] 
Sent: Monday, November 03, 2003 4:48 PM
To: Stephane Fellah; www-rdf-logic@w3.org
Subject: Re: Expressing operators and functions in RDF



   [Stephane Fellah]
   I am working on the design of a OWL ontology for operations and
   functions (some are spatial and temporal) that can be used by a Rule
   language (for example current draft OWL Rules). Prior developing the
   ontology, I am trying to produce some examples in RDF-XML syntax to
   express these operations/functions. CWM has already some build-in
   operators.

   I can distinguish 3 cases for the moment: ....

The basic idea behind OWL Rules and other encodings of logic in RDF
(although CWM doesn't use this trick) is to make an atomic formula be an
object of discussion instead of a triple.  Disjunctions, variable
bindings, etc., are then RDF trees whose leaves are atomic formulas.

So I would represent absolute value thus:

<Absolute_value>
    <operand
rdf:datatype="http://www.w3.org/2001/XMLSchema#int">-1</operand>
    <result
rdf:datatype="http://www.w3.org/2001/XMLSchema#int">1</result>
</Absolute_value>

Then one can translate the formula

   (forall (x x1) (if (and (< x 0) (unaryMinus x x1))
                      (absolute_value x x1)))

into  (where "drs:" is the namespace prefix for
http://cs-www.cs.yale.edu/homes/dvm/daml/drsonto.owl#) 

<drs:Forall>
   <drs:bound_vars>
      <drs:Var_bag rdf:parseType="collection">
         <drs:Var rdf:ID="v199" drs:name="x"/>
	 <drs:Var rdf:ID="v203" drs:name="x1"/>
      </drs:Var_bag>
   </drs:bound_vars>
   <drs:Implies>
      <drs:antecedent>
	 <drs:And>
	    <drs:conn_args rdf:parseType="collection">
	       <math:Less>
		  <math:left_arg rdf:resource="#v199"/>
		  <math:right_arg
rdf:datatype="http://www.w3.org/2001/XMLSchema#int">
		     0
		  </math:right_arg>
	       </math:Less>
	       <math:Unary_minus>
		  <math:operand rdf:resource="#v199"/>
		  <math:result rdf:resource="#v203"/>
	       </math:Unary_minus>
	    </drs:conn_args>
	 </drs:And>
      </drs:antecedent>
      <drs:consequent>
	 <math:Absolute_value>
	    <math:operand rdf:resource="#v199"/>
	    <math:result rdf:resource="#v203"/>
	 </math:Absolute_value>
      </drs:consequent>
   </drs:Implies>
</drs:Forall>

If you love RDF syntax, you gotta love this.

-- 
                                   -- Drew McDermott
                                      Yale Computer Science Department

Received on Tuesday, 4 November 2003 11:22:11 UTC