- From: Boley, Harold <Harold.Boley@nrc-cnrc.gc.ca>
- Date: Tue, 2 Dec 2003 19:49:14 -0500
- To: 'Drew McDermott' <drew.mcdermott@yale.edu>, www-rdf-rules@w3.org
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