- From: Dan Connolly <connolly@w3.org>
 - Date: Mon, 25 Sep 2006 12:37:59 -0500
 - To: "Boley, Harold" <Harold.Boley@nrc-cnrc.gc.ca>
 - Cc: "Public-Rif-Wg (E-mail)" <public-rif-wg@w3.org>
 - Message-Id: <1159205879.5616.684.camel@dirk>
 
On Thu, 2006-09-14 at 13:23 -0400, Boley, Harold wrote:
> Michael & I have completed our Horn semantics and syntax
> actions from Tuesday, as part of the RIF Extensible Design:
> http://www.w3.org/2005/rules/wg/wiki/B._Extension%3A_RIF_Rule_Language
> http://www.w3.org/2005/rules/wg/wiki/B.1_Horn_Rules
The code I wrote to translate N3-rules also translates RDF/XML.
So I can run it on the OWL tests... for example, attached
find ,statecode.xml, the output of running it on...
  http://www.w3.org/2002/03owlt/I5.1/premises001 
and ,list.xml, the output of running it on
  http://www.w3.org/2002/03owlt/I5.5/conclusions005
The RDF parser in swap/cwm treats turns first/rest triples into
something more like a function term. So that's the way I have
written them out in RIF:
    <Atom>
      <Rel>holds</Rel>
      <Ind iri="http://www.w3.org/1999/02/22-rdf-syntax-ns#type" />
      <Expr>
        <Fun>list</Fun>
        <Ind iri="http://www.w3.org/2002/03owlt/I5.5/premises005#a" />
      </Expr>
      <Ind iri="http://www.w3.org/1999/02/22-rdf-syntax-ns#List" />
    </Atom>
Specifying a list function symbol and the relationship to first/rest
involves induction, I suppose. I think it's worth doing, though.
My approach to RDF "triples" is to use a 3-place "holds" relation:
    <Atom>
      <Rel>holds</Rel>
      <Ind iri="http://example.org/vocab#stateCode" />
      <Var>g3</Var>
      <Data>KS</Data>
    </Atom>
This allows us to write rules corresponding to the RDFS semantics
and parts of OWL, as in the owl pD* paper
  http://www.websemanticsjournal.org/ps/pub/2005-15
I transcribed those rules into N3 and then played
around with them a bit...
  http://www.w3.org/2000/10/swap/util/owlth.n3
Jos has done something similar...
  http://www.agfa.com/w3c/euler/rpo-rules.n3 
Attached find ,rpo.xml , the output of my N3-to-RIF
translator on that rpo-rules.n3.
For example
  {?P rdfs:domain ?C. ?S ?P ?O} => {?S a ?C}.
turns into...
  <Implies>
    <And>
      <Atom>
        <Rel>holds</Rel>
        <Ind iri="http://www.w3.org/2000/01/rdf-schema#domain" />
        <Var>P</Var>
        <Var>C</Var>
      </Atom>
      <Atom>
        <Rel>holds</Rel>
        <Var>P</Var>
        <Var>S</Var>
        <Var>O</Var>
      </Atom>
    </And>
    <Atom>
      <Rel>holds</Rel>
      <Ind iri="http://www.w3.org/1999/02/22-rdf-syntax-ns#type" />
      <Var>S</Var>
      <Var>C</Var>
    </Atom>
  </Implies>
FYI, I have a couple versions of RDFS semantics in rules;
one transcribed faithfully from the spec...
  http://www.w3.org/2000/10/swap/util/rdfs-rules.n3 
and one that omits "boring" rules like "everything is a Resource"...
  http://www.w3.org/2000/10/swap/util/rdfs-nice.n3
and for those who want to play along at home, this is the
exact command line I'm using:
~/w3ccvs/WWW/2000/10/swap$ PYTHONPATH=.. python2.4 n3absyn.py
http://www.w3.org/2002/03owlt/I5.1/premises001 --rif |tidy -i -xml
>,statecode.xml
and this assumes you have swap checked out, per
 http://www.w3.org/2000/10/swap/doc/cwm#dev
And if you want to use tidy...
 http://tidy.sourceforge.net/
-- 
Dan Connolly, W3C http://www.w3.org/People/Connolly/
D3C2 887B 0F92 6005 C541  0875 0F91 96DE 6E52 C29E
Attachments
- application/xml attachment: _statecode.xml
 - application/xml attachment: _rpo.xml
 - application/xml attachment: _list.xml
 
Received on Monday, 25 September 2006 17:38:16 UTC