W3C home > Mailing lists > Public > www-rdf-rules@w3.org > October 2001

Re: Expressiveness of RDF as Rule Conclusion Language (was Re: W hat is an RDF Query? )

From: Drew McDermott <drew.mcdermott@yale.edu>
Date: Fri, 5 Oct 2001 10:06:04 -0400 (EDT)
Message-Id: <200110051406.f95E64G16655@pantheon-po02.its.yale.edu>
To: www-rdf-rules@w3.org

   > If not, then it seems like there isn't much to discuss.  As has
   > already been suggested, a rule would be of the form P -> Q, where P
   > and Q are both RDF graphs with some nodes variabilized.  They could be
   > used either forward or backward. 

   [Sandro Hawke]
   I'm trying to figure out a good way to "variabilize" the nodes.  I
   suggested earlier that we could simply use the bNodes (aka anonymous
   nodes, aka document-scoped existential variables), with some special
   rules for connecting their scopes.  It has been pointed out to me that
   linking their scopes is quite counter to RDF design; for instance,
   RDF/XML has no way to name these variables.  (Jonathan Borden
   suggested [3] one could use XPointer, but that seems very awkward

I'm not sure what the problem is.  I guess you want to variabilize the
nodes while leaving the result a legal RDF graph.  I can think of two

a) Don't require it to be a legal RDF graph.  Make it an "RDF graph
schema," that is, something containing variables that becomes an RDF
graph when nodes are substituted for the variables.

b) Take a legal RDF graph and associate variables with some of the
nodes by drawing new arcs from the nodes to the variables (i.e.,
giving each nodes a new 'var_label' property).

Both of these ideas leave the variables without explicit scope, as in
Prolog.  If you want explicit scope, things get more interesting.

   I think with this kind of approach, the interpretation of bNodes as
   file-scope existential variables works perfectly.  In the premise,
   they are just anonymous universal variables (because they are inside
   the "if"), and in the conclusion they become skolem functions of the
   universal variables, which is very useful.  

I think you pulled a fast one there.  If the variables are really
file-scope existentials, then a rule would look like this:

ex x ((P x) -> (Q x))   
  [the 'ex x' might actually be way outside the implication,
   which is just one of many things in the file]

This is not equivalent to

ex x ((fa x (P x)) -> (Q x))

or to

fa x ((P x) -> (Q x))

                                             -- Drew McDermott
Received on Friday, 5 October 2001 10:06:05 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 22:46:14 UTC