- From: Jos de Bruijn <debruijn@inf.unibz.it>
- Date: Thu, 22 Oct 2009 11:00:52 +0200
- To: kifer@cs.sunysb.edu
- CC: RIF WG Public list <public-rif-wg@w3.org>
- Message-ID: <4AE01F44.1070609@inf.unibz.it>
> In today's telecon I was asked to reanimate the issue of OWL compatibility, > which was discussed 1 month ago. > > Here is the relevant message: > > http://lists.w3.org/Archives/Public/public-rif-wg/2009Sep/0017.html > > The current situation is a bug, IMO. If it isn't a bug then at least that part > of the document is very unsatisfactory and obscure. Jos proposed 3 solutions: > > 1- leave things as they are, assuming that # and ## are not of interest > to users of RIF-OWL DL combinations > 2- explain the use of # and ## in the document (this would certainly not > be a substantive change, so we should not run into procedural problems) > 3- define the semantics of # and ## in RIF-OWL DL combinations in a > similar fashion as in RIF-RDF combinations: a one-to-one correspondence > between # and OWL class membership statements and implication between ## > and OWL subclassing. > > The easiest for him would be to do nothing (1), thus leaving things > unsatisfactory and obscure. His next choice is (3), which is also my choice and > the "right thing to do." (3) stretches things a little, but it can be argued > that it is a simple fix. In my earlier e-mail to Michael referred to I did not say what my preference is among the mentioned options. I guess arguments can be made for all three options, so in fact I do not have a strong preference, but I do have a concern about option (3): implementation might be harder. If, for example, implementation is done through embedding in other rules system, like the embedding of RIF-OWL2RL combination in the appendix of the document, quite a few rules need to be added for the ## construct. In particular, for every pair of distinct class names (A,B), we need to add the rule: Forall ?x (?x[rdf:type -> B] :- And(?x[rdf:type -> A] A##B)) This means adding a quadratic number of rules. Dealing with # is easy: in the mapping of RIF DL-document formulas to RIF documents [1] we simply map a#b to tr'(b)(a). Clearly, we would restrict b in formulas a#b to constant symbols. [1] http://www.w3.org/TR/rif-rdf-owl/#Embedding_RIF_DL-document_formulas_into_RIF_BLD > > Solution (2) is more work. It fixes the obscurity aspect, not the > unsatisfactory aspect of the definitions. So, (3) seems like the best way to > proceed. > > Solution (3) still leaves some problems, which are unrelated to the above > issues. In the current semantics, subclassing in RIF implies subclassing in > OWL/RDF, but not vice versa. > > In this regard, I would like to point to my follow-up message > http://lists.w3.org/Archives/Public/public-rif-wg/2009Sep/0019.html > Here I proposed a stronger semantics, which fixes this non-entailment problem. Michael proposed the following semantics: {(A,B) | A rdfs:subclassOf B and A != B on the RDF side} = {(A,B) | A##B on the RIF side} I feel that this would take us out of Horn, even when considering Simple entailment, because implementation would require (classical) negation. At least, that is the only way I current see how this could be implemented. As we know, classical negation in the body amounts to disjunction in the head, so we would end up adding the following rule to the embedding of RDF-RDF combinations: Forall ?x, ?y (Or(?x##?y ?x=?y) :- ?x[rdfs:subClassOf -> ?y]) For RIF-OWL DL combinations such a semantics is even more problematic, because subclass in OWL DL means subset relation between class extensions, so the condition would look something like (X^C is the class extension of X): {(A,B) | A^C subset B^C and A^C != B^C on the RDF side} = {(A,B) | A##B on the RIF side} (Actually, we will need to apply some tricks here, since A and B are not constants on the OWL side, but I guess we can come up with a definition that kind-of achieves this semantics) A formula implementing the => direction of the condition for a pair of class names A,B would look something like (again, negation in the body becomes disjunction in the head): Forall ?x ( Or(A##B And(Forall ?x(?x[rdf:type -> B] :- ?x[rdf:type -> A]) Forall ?x(?x[rdf:type -> A] :- ?x[rdf:type -> B]))) :- Forall ?x(?x[rdf:type -> B] :- ?x[rdf:type -> A])) So, I would not be in favor of extending either the semantics of RDF or the semantics of OWL DL combinations with such a condition. Best, Jos > > This would certainly be a substantive change semantically (although not > significant textually). If we don't have the energy to do it this time, > maybe for RIF 1.1. > > michael > -- Jos de Bruijn debruijn@inf.unibz.it +390471016224 http://www.debruijn.net/
Received on Thursday, 22 October 2009 09:00:35 UTC