RE: Semantic Web Rule Language (SWRL) 0.5 released

Hi Drew,

You wrote:
I have taken another look, and I'm still baffled.  The link you
specify leads to http://www.ruleml.org/indtd0.8.html, and from there
you are directed to a maze of twisty passages.  Eventually you stumble
upon the tree that shows the relationships among all the possible
syntaxes for RuleML.  Ah!  The example T3/X3 is said to be the 0.8
version of the example rule.  But where is the DTD or schema for the
language of which this rule is an exemplar?

The subsection http://www.ruleml.org/indtd0.8.html#Context mostly shows
how RuleML 0.8 (T3/X3) fits between maximally (T1/X1) and minimally (T6/X6)
positional versions. The DTD for the X3 markup is ruleml-datalog.dtd, linked
from the subheading "All DTDs: DTD Directory" of the main "RuleML DTDs"
heading (yes, it should also be linked to directly; and yes, the family
tree of RuleML sublanguages -- such as an update of the one in Figure 2 of
http://www.semanticweb.org/SWWS/program/full/paper20.pdf -- should really
be only one link away from anywhere across the website). 

You wrote:
   (where your embedded <ruleml:Imp> should be called <ruleml:Implies>)
   ...
   (since <ruleml:Imp> establishes a variable scope like <drs:Forall> does).
No!  There is a big difference between an implicit top-level scope and
the scope established by some kind of explicit binder (such as
'defun', 'lambda', or 'forall').  The difference appears when the
expression is embedded in another expression.  . . .

But <ruleml:Imp> cannot be embedded in another expression, only the new
<ruleml:Implies> could.

You wrote
(http://lists.w3.org/Archives/Public/www-rdf-rules/2003Nov/0178.html):
I am curious why explicit quantifiers are so conspicuously absent from
SWRL.  Granted, it's very easy to add them, as we do in DRS.  With
explicit quantifiers, example 6.1-2 becomes  . . .

I just meant: When, in your version of example 6.1-2, the embedded
<ruleml:Imp>
is replaced with <ruleml:Implies> (i.e., with the usual '=>' connective), as
in

<swrl:Variable rdf:ID="x"/>
<swrl:Variable rdf:ID="y"/>
<swrl:Variable rdf:ID="z"/>
<drs:Forall>
   <drs:bound_vars>
      <drs:binds rdf:resource="#x"/>
      <drs:binds rdf:resource="#y"/>
      <drs:binds rdf:resource="#z"/>
   </drs:bound_vars>
   <ruleml:Implies> 
     <ruleml:body rdf:parseType="Collection">
       <swrl:classAtom> 
	   <swrl:classPredicate rdf:resource="&ulan;Artist"/> 
	   <swrl:argument1 rdf:resource="#x" />
       </swrl:classAtom>
       <swrl:classAtom> 
	   <swrl:classPredicate rdf:resource="&aat;Style"/> 
	   <swrl:argument1 rdf:resource="#y" />
       </swrl:classAtom>
       <swrl:individualPropertyAtom> 
	   <swrl:propertyPredicate rdf:resource="&aatulan;artistStyle"/> 
	   <swrl:argument1 rdf:resource="#x" />
	   <swrl:argument2 rdf:resource="#y" />
       </swrl:individualPropertyAtom>
       <swrl:individualPropertyAtom> 
	   <swrl:propertyPredicate rdf:resource="&vra;creator"/> 
	   <swrl:argument1 rdf:resource="#x" />
	   <swrl:argument2 rdf:resource="#z" />
       </swrl:individualPropertyAtom>
     </ruleml:body>
     <ruleml:head rdf:parseType="Collection"> 
       <swrl:individualPropertyAtom> 
	   <swrl:propertyPredicate rdf:resource="&vra;style/period"/> 
	   <swrl:argument1 rdf:resource="#z" />
	   <swrl:argument2 rdf:resource="#y" />
       </swrl:individualPropertyAtom>
     </ruleml:head> 
   </ruleml:Implies> 
</drs:Forall>

this will make explicit the universal binding convention of <ruleml:Imp>,
as in our original

<swrl:Variable rdf:ID="x"/>
<swrl:Variable rdf:ID="y"/>
<swrl:Variable rdf:ID="z"/>
<ruleml:Imp> 
  <ruleml:body rdf:parseType="Collection">
    <swrl:classAtom> 
      <swrl:classPredicate rdf:resource="&ulan;Artist"/> 
      <swrl:argument1 rdf:resource="#x" />
    </swrl:classAtom>
    <swrl:classAtom> 
      <swrl:classPredicate rdf:resource="&aat;Style"/> 
      <swrl:argument1 rdf:resource="#y" />
    </swrl:classAtom>
    <swrl:individualPropertyAtom> 
      <swrl:propertyPredicate rdf:resource="&aatulan;artistStyle"/> 
      <swrl:argument1 rdf:resource="#x" />
      <swrl:argument2 rdf:resource="#y" />
    </swrl:individualPropertyAtom>
    <swrl:individualPropertyAtom> 
      <swrl:propertyPredicate rdf:resource="&vra;creator"/> 
      <swrl:argument1 rdf:resource="#x" />
      <swrl:argument2 rdf:resource="#z" />
    </swrl:individualPropertyAtom>
  </ruleml:body>
  <ruleml:head rdf:parseType="Collection"> 
    <swrl:individualPropertyAtom> 
      <swrl:propertyPredicate rdf:resource="&vra;style/period"/> 
      <swrl:argument1 rdf:resource="#z" />
      <swrl:argument2 rdf:resource="#y" />
    </swrl:individualPropertyAtom>
  </ruleml:head> 
</ruleml:Imp> 

You wrote:
   But again, I think we should put a version of your (DRS) suggestion into
   the SWRL (and RuleML, ...) issues lists.
I won't object!

Thanks for again reminding us of, and expanding on, this issue. Perhaps we
could phrase the issue succinctly as follows:

"The current universal binding convention for <ruleml:Imp> and <ruleml:imp>
should be reconsidered in light of the (uniformity) advantages of an
explicit
<ruleml:Forall> construct. An explicit <ruleml:Exists> could follow
naturally."

Best,
Harold

Received on Tuesday, 2 December 2003 19:50:09 UTC