Scheme closure

As an exercise, I tried to apply the RDFS closure rules defined in the model
theory document (Section 5 - RDFS entailment) on the example one triple
model: I got 25 triples in the closure, of which 20 do not involve the terms
in the original data.

Unfortunately for me, the example in the model thoery document only has 10
triples (7 from the example and 3 from the first step).  I do get all the
triples in the example.  Running without the three "always true" triples
gives a model of 18 triples.

For at least some of the extra triples, my understanding is that it is
correct to generate them: example:

Data: <foo> <bar> <baz>.

Rule 1b gives
    <bar> <rdf:type> <rdf:Property> .
Rule 1a then gives    
    <bar> <rdf:type> <rdf:Resource> .
and Rule 1c gives
    <rdf:Property> <rdf:type> <rdf:Resource> .

The last two are not in the example.  Is this a correct or have I got it
wrong in some way?

The rules are coded up using Jena : the rule application is by searching the
model for current matches, adding all the new statements, then moving on to
the next rule.  This loop is continued until the model does not change.
Hence, recursive application of rules happens because of the loop, not
because the rule is applied exhaustively before moving on.

Attached are traces for (1) a model of one triple + the 3 fixed triples and
(2) a model of just the foo/bar/baz triple and (3) the code (extracted from
a larger system).

	Andy

Received on Tuesday, 23 October 2001 12:39:39 UTC