- 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