W3C home > Mailing lists > Public > public-owl-dev@w3.org > July to September 2007

Re: Some advice on inferring negated properties

From: Bijan Parsia <bparsia@cs.man.ac.uk>
Date: Thu, 16 Aug 2007 20:20:05 +0100
Message-Id: <2E3F6562-A6E8-4635-B266-0D00A2176017@cs.man.ac.uk>
Cc: Matt Williams <matthew.williams@cancer.org.uk>, Owl Dev <public-owl-dev@w3.org>
To: "Swanson, Tim" <tim.swanson@semanticarts.com>

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 GMT

This archive was generated by hypermail 2.3.1 : Wednesday, 27 March 2013 09:32:55 GMT