On Fri, Mar 14, 2014 at 4:23 PM, Miguel Bento Alves
<[email protected]> wrote:
> Hi Joshua,
>
> r1 is a backward rule [r1: Š <- Š]. In my understanding, backward rules
> are things that relate two resources, overcoming the limitations of OWL
> and OWL2.

A backward rule doesn't relate two resources.  A backward rule
provides a pattern for a triple as the head, and some conditions under
which the triple can be inferred.  E.g.,

[r: (?s rdf:type ?superclass) <-
  (?s rdf:type ?subclass)
  (?subclass rdfs:subClassOf ?superclass)]

When the reasoner tries to infer a triple of the form (?s rdf:type
?superclass), it will try to use this rule by checking whether matches
for the body can be found.  It doesn't make sense to say that the rule
r relates two resources;  that's not what a rule is.  A rule is a
basis for  for inferring triples from existing data and other
conditions.

> Thus, I think that the example that I gave make sense:
> (r1 is a backward rule)
>
> (?f r1 ?e),
> (?f p1 ?p),
> (?e p2 ?p),
> makeTemp(?bn) ->
>          (?bn rdf:subject ?f),
>          (?bn rdf:predicate p3),
>          (?bn rdf:object ?e),
>          (?bn exa:certainty "0.9"^^xsd:decimal).

Again, I'm not sure what (?f r1 ?e) is supposed to mean.  In the rule
syntax, it's just a triple with variables as the subject and object,
and a URI r1 as the predicate.  In the example rule r that I gave,
what would you expect (?s r ?o) to mean?

> Moreover, this rule works well if I materialize r1.
> Construct {
>         (?f r1 ?e)
> }
> Where {
>         (?f r1 ?e)
> }
> (of course, if I materialize a rule I remove from ruleset).

I'm not sure what this is supposed to mean.  If you construct the data
that matched a triple pattern, then you'll get the same data that
matched the triple pattern. I'm not sure how this is "a
materialization of r1".

> Do you think that this understanding of what is a (backward) rule is not
> correct?

I think it's not correct, but I'm still not sure what you think it
would mean to have a backward rule [r: ... <- ...] and then write a
triple pattern (?s r ?o).   Rules aren't predicates, so it doesn't
make sense to me to try to use them as predicates.

//JT
-- 
Joshua Taylor, http://www.cs.rpi.edu/~tayloj/

Reply via email to