- From: Michael Schneider <schneid@fzi.de>
- Date: Sat, 5 Mar 2011 22:41:01 +0000
- To: "yrodriguezma@uci.cu" <yrodriguezma@uci.cu>
- CC: "public-owl-dev@w3.org" <public-owl-dev@w3.org>
Hi Yoandy! I'll answer your two questions in separate mails. Here is my answer to your first question. >-----Original Message----- >From: Yoandy Rodriguez [mailto:yrodriguezma@uci.cu] >Sent: Friday, March 04, 2011 8:45 PM >To: Michael Schneider >Cc: public-owl-dev@w3.org >Subject: RE: beginer question about inferencing > >El vie, 04-03-2011 a las 12:17 +0000, Michael Schneider escribió: >> Hi Yoandy! >> >> Not an answer, but I need to ask for clarification. See below: >> >> >-----Original Message----- >> >From: public-owl-dev-request@w3.org [mailto:public-owl-dev- >> >request@w3.org] On Behalf Of Yoandy Rodriguez >> >Sent: Thursday, March 03, 2011 5:11 PM >> >To: public-owl-dev@w3.org >> >Subject: beginer question about inferencing >> > >> >Hello, >> > >> >Currently I'm trying to build a model that allows me to make the >> >following inferences. >> >"if someone is friend of two people who hates themselves then he is a >> >neutral person" >> >> Do you mean that each friend hates himself reflexively >("hates(?friend,?friend)"), >> or rather that the two friends hate each other ("hates(?f1,?f2) and >hates(?f2,?f1)"). >> I guess, it's the second option, since it then makes more sense to >stay neutral? :-) [snip] >Hello Michael, > >What I want to express is something like this: >friend(?A,?B),friend(A?,?C),hates(?B,C?):-Neutral(?A) Ok, that's clearer now. >but without using SWRL or another rule languaje, I figure there must be >a way of doing it using only OWL (but again, I'm still reading my first >semantic web book so there's a 99% chance that I'm wrong). Nice problem for a start! :) What you want to do here essentially is detecting a circular relationship (beware the ASCII art!): A -- friend --> B : I : I = hates : I : v A' <-inv(friend)- C where "inv(p)" is the inverse of a property p. Whenever such a "A friend o hates o inv(friend) A" circle is detected, then A should be inferred to be a member of class Neutral. In principle, there is a way to express this in OWL 2, but there is a serious caveat, which I will discuss below. Here is a solution written in the OWL 2 functional syntax [1]: Prefix(ex:=<http://example.org>) Ontology ( Declaration(Class(ex:Neutral)) Declaration(ObjectProperty(ex:friend)) Declaration(ObjectProperty(ex:hates)) Declaration(ObjectProperty(ex:f-h-fi)) SubObjectPropertyOf( ObjectPropertyChain( ex:friend ex:hates ObjectInverseOf(ex:friend)) ex:f-h-fi) SubClassOf( ObjectHasSelf(ex:f-h-fi) ex:Neutral) ObjectPropertyAssertion(ex:friend ex:Alice ex:Bob) ObjectPropertyAssertion(ex:friend ex:Alice ex:Charly) ObjectPropertyAssertion(ex:hates ex:Bob ex:Charly) ) And here the same solution in RDF/Turtle: @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix owl: <http://www.w3.org/2002/07/owl#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix ex: <http://www.example.org/> . _:o rdf:type owl:Ontology . ex:Neutral rdf:type owl:Class . ex:friend rdf:type owl:ObjectProperty . ex:hates rdf:type owl:ObjectProperty . ex:f-h-fi rdf:type owl:ObjectProperty . ex:f-h-fi owl:propertyChainAxiom ( ex:friend ex:hates [ owl:inverseOf ex:friend ] ) . _:circ rdf:type owl:Restriction ; owl:onProperty ex:f-h-fi ; owl:hasSelf "true"^^xsd:boolean . _:circ rdfs:subClassOf ex:Neutral . ex:Alice ex:friend ex:Bob . ex:Alice ex:friend ex:Charly . ex:Bob ex:hates ex:Charly . What is done here is defining a helper property "ex:f-h-fi" in terms of the property chain "ex:friend o ex:hates o inv(ex:friend)" and, since this alone is not guaranteed to lead to a circular structure, we additionally put a self-restriction on property "ex:f-h-fi", which results in a class consisting of all the individuals ?x for which ex:f-h-fi(?x, ?x) holds, i.e., these individuals are really in the desired circular chain. Last thing we do is making the self-restriction a sub class of class ex:Neutral, so every individual in an ex:f-h-fi circle will also be in the ex:Neutral class. Sounds good, right? Well, as said, there is caveat: the above is /not/ a valid OWL 2 DL ontology. The issue is that not everything that can be written in the OWL 2 syntax is automatically a valid OWL 2 DL ontology. In our case, it is not allowed to have a self-restriction put on a property that has been defined via a property chain axiom (see Sec. 11.2 of [1]). This syntactic restriction has been made to guarantee computational decidability of core reasoning tasks in OWL 2 DL. Sounds bad, right? :-( Let me mention that, practically, existing OWL 2 DL reasoners would still be conformant to the OWL 2 DL language, if they would ignore the restrictions and simply try to get as far as possible outside OWL 2 DL. Many OWL 2 DL reasoners actually do some reasoning work outside the limits of OWL 2 DL and some reasoners even parse the above input but, unfortunately, I'm not aware of any OWL 2 DL reasoner that produces the expected reasoning result from the above, namely that ex:Alice is a member of class ex:Neutral. What would help here would be an OWL 2 DL reasoner that would really /dare/ to get the result, regardless of any theoretic undecidability results (who dares wins! :-)). Or, alternatively, an OWL 2 Full reasoner would do the job, since in OWL 2 Full the mentioned syntactic restrictions do not exist at all [2]. But that's all speculation, since no reasoner with these features exist so far, so let's see what the future will give us! :-) However, there is at least one reasoner that is able to produce the expected result: It is the (extended) online OWL 2 RL/RDF rule reasoner by Ivan Herman at [3]. Since the original specification of the OWL 2 RL/RDF rules [4] does not contain rules for self-restrictions, you have to switch on the "OWL extras" on the reasoner homepage to include a rule for this OWL 2 feature. This will make the result appear. It is quite possible that other OWL 2 RL/RDF rule reasoners will give you the result as well, as the corresponding rule for self-restrictions isn't hard to be added. Note, however, that the OWL 2 RL/RDF rules will conversely not give you all the results that you would expect from an OWL 2 DL reasoner. Further, reliant ontology consistency and non-entailment detection is something that you can only expect from an OWL 2 DL reasoner. So both entailment regimes have their advantages and disadvantages. I know that this is not a perfectly satisfying answer but, I'm afraid, I don't know any better. :) Cheers, Michael [1] OWL 2 Structural Specification (contains functional syntax and definition of OWL 2 DL restrictions): <http://www.w3.org/TR/owl2-syntax/> [2] OWL 2 RDF-Based Semantics (the semantics of OWL 2 Full): <http://www.w3.org/TR/owl2-rdf-based-semantics/> [3] Ivan Herman's (extended) OWL 2 RL reasoner: <http://www.ivan-herman.net/Misc/2008/owlrl/> [4] OWL 2 RL/RDF Rules: Sec. 4.3 in <http://www.w3.org/TR/owl2-profiles/> -- Dipl.-Inform. Michael Schneider Research Scientist, Information Process Engineering (IPE) Tel : +49-721-9654-726 Fax : +49-721-9654-727 Email: michael.schneider@fzi.de WWW : http://www.fzi.de/michael.schneider ============================================================================== FZI Forschungszentrum Informatik an der Universität Karlsruhe Haid-und-Neu-Str. 10-14, D-76131 Karlsruhe Tel.: +49-721-9654-0, Fax: +49-721-9654-959 Stiftung des bürgerlichen Rechts Stiftung Az: 14-0563.1 Regierungspräsidium Karlsruhe Vorstand: Dipl. Wi.-Ing. Michael Flor, Prof. Dr. rer. nat. Ralf Reussner, Prof. Dr. rer. nat. Dr. h.c. Wolffried Stucky, Prof. Dr. rer. nat. Rudi Studer Vorsitzender des Kuratoriums: Ministerialdirigent Günther Leßnerkraus ==============================================================================
Received on Saturday, 5 March 2011 22:43:01 UTC