- From: Bijan Parsia <bparsia@cs.man.ac.uk>
- Date: Thu, 16 Aug 2007 20:20:05 +0100
- To: "Swanson, Tim" <tim.swanson@semanticarts.com>
- Cc: Matt Williams <matthew.williams@cancer.org.uk>, Owl Dev <public-owl-dev@w3.org>
On Aug 16, 2007, at 7:52 PM, Swanson, Tim wrote: [snip] > [Bijan Parsia] >>>>> Pellet 1.5 will find the latter inconsistent, but the "entailment >>>>> checking" feature hasn't been extended to OWL 1.1 yet, so you > can't >>>>> directly check the first pair. Of course, you could just add the >>>>> ObjectPropertyAssertion of instance and check for inconsistency >>>>> (i.e., if it is, then the corresponding negative one must be > true). > > But I wonder if you couldn't test the entailment by testing for > membership in the class (in Manchester OWL syntax): > > not (P has <any individual>) I think found your confusion...you aren't used to OWL 1.1's abstract syntax. That's the same as the class expression part of: """ ClassAssertion(a, ObjectComplementOf (ObjectHasValue(P, b))) """ in: """(Note you can also check for the negated hasValue form: ClassAssertion(a, ObjectComplementOf (ObjectHasValue(P, b))) is equivalent to the negative propety assertion. And is expressible in OWL DL.""" > In this case, it seems to me that Pellet should return "true" to a > direct query on class membership. However, I haven't tested this. > Bijan? Yes. That should be entailed. It's perfectly reasonable OWL DL. Lessee... Ok (sorry for switching syntaxes, but you can cnp this into the web form): @prefix owl: <http://www.w3.org/2002/07/owl#>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix ex: <http://example.org/>. ex:a rdf:type [ owl:complementOf [a owl:Restriction; owl:hasValue ex:b; owl:onProperty ex:P]]. ex:a ex:P ex:b. Paste that into the web form (v. old version of Pellet) and you get an inconsistency. If you replace the last line with "ex:b rdf:type owl:Thing" (to get ex:b into the signature), this will entail: ex:a rdf:type [a owl:Restriction; owl:allValuesFrom owl:Nothing; owl:onProperty ex:P]] (I add the full pellet command line at the end. Tested it with the Pellet 1.5 download; http://pellet.owldl.com/download but should work in earlier versions. 1.4 at least.) > (Admittedly, this is not the same thing as "directly" checking for the > negative entailment, since it relies on the user's understanding of > OWL > semantics to make the jump from membership in the above class to the > negative entailment.) It's not a negative entailment (which for me means a *failure* to entail) but an entailment of a negation, but yes. For Matt's purpose this might be fine. OWL 1.1 statement entailment shall be added to Pellet in due course (esp to support SPARQL). One could, of course, write such a wrapper. Hope this helps. Cheers, Bijan. ./pellet.sh -consistency on -conclusionsFormat N3 -ifmt N3 -is "@prefix owl: <http://www.w3.org/2002/07/owl#>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix ex: <http://example.org/>. # Used this alternative form to avoid the need for XSD :) ex:a rdf:type [a owl:Restriction; owl:allValuesFrom owl:Nothing; owl:onProperty ex:P]. ex:b rdf:type owl:Thing. " -cs "@prefix owl: <http://www.w3.org/2002/07/owl#>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix ex: <http://example.org/>. ex:a rdf:type [ owl:complementOf [a owl:Restriction; owl:hasValue ex:b; owl:onProperty ex:P]]." Pellet yields: Consistent: Yes Entailed: Yes Time: 4160 ms (Loading: 3992 Species Validation: 79 Consistency: 43 )
Received on Thursday, 16 August 2007 19:20:19 UTC