- From: Seaborne, Andy <Andy_Seaborne@hplb.hpl.hp.com>
- Date: Tue, 23 Oct 2001 17:39:01 +0100
- To: "'www-rdf-comments@w3.org'" <www-rdf-comments@w3.org>
- Message-ID: <5E13A1874524D411A876006008CD059F24E4FD@0-mail-1.hpl.hp.com>
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
Attachments
- application/octet-stream attachment: schema-closure.log
- application/octet-stream attachment: schema-closure2.log
- application/octet-stream attachment: closure.java
Received on Tuesday, 23 October 2001 12:39:39 UTC