RE: Some advice on inferring negated properties

Matt,
It seems you're interested in negated properties for instances. My own solution
involves separating predicate nouns from predicate verbs. The effect is to
eliminate the notion of properties named like "hasName" replacing them with just
"Name" and separately recording the predicate verb "has"....

<Thing>
    <Name verb='has'>
	<Literal text='Thing'/>
    </Name>
</Thing>

So I have predicate verbs such as "hasNot" to indicate an actual non-existence
of a property for a resource.  When a property is missing for a resource but is
presumed obtainable, then the predicate verb "mustHave" is used. As you can see,
I am adding a new axis of meta-information for a triple, one that is about tense
and conditionality of the triple-statement.

Let me note that only two predicate verbs are important to me -- to-Have and
to-Be -- and that there's no generic tool support for this construction.

>-----Original Message-----
>From: public-owl-dev-request@w3.org
>[mailto:public-owl-dev-request@w3.org]On Behalf Of Bijan Parsia
>Sent: Wednesday, August 15, 2007 9:22 AM
>To: Matt Williams
>Cc: public-owl-dev@w3.org
>Subject: Re: Some advice on inferring negated properties
>
>
>
>[redirecting to public-owl-dev]
>
>On 15 Aug 2007, at 08:39, Matt Williams wrote:
>
>>
>> Dear All,
>>
>> Apologies for sending this relatively widely - I thought that these
>> lists are the closest the community who might have ideas.
>>
>> I'm trying to use the negated object properties (in OWL 1.1), and
>> was wondering what other people's experience had been.
>>
>> Specifically, I have been having problems with finding an inference
>> mechanism that will allow their creation.
>
>I'm not sure exactly what you mean. They certainly can be entailed
>from OWL 1.1 kbs. For example:
>
>	ClassAssertion(a, ObjectMaxCardinality(0, P, owl:Thing))
>	ClassAssertion(b, owl:Thing)
>
>Entails
>	NegativeObjectPropertyAssertion(P, a, b)
>
>And thus:
>	ClassAssertion(a, ObjectMaxCardinality(0, P, owl:Thing))
>	ObjectPropertyAssertion(P, a, b)
>
>is inconsistent.
>
>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).
>
>> AFAIK, the Jena rules engine won't do it,
>
>Er...what?
>
>> and neither will SWRL (which doesn't /seem/ to allow it).
>
>I don't know why you are leaping to rule languages here, which makes
>me belief that I don't understand your issue at all.
>
>> The best I could come up with was a "special" set of properties
>> (e.g. notMyProp1, notMyProp2, where the ontology has MyProp1 & 2)
>> and then some direct rdf manipulation to turn:
>>
>> ?x notMyProp1 ?y into
>> ¬ (?x MyProp1 ?y)
>>
>> Code wise this is not too bad (although I suspect scales badly),
>> but it feels very "hacky".
>
>I don't understand why you'd want this.
>
>(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.
>
>> Does anyone have any advice/ experience of doing this?
>
>If you need such as the consequent of a rule, you could use the
>nominal encoding. I expect that any OWL based rule language will be
>updated to take into account negated property atoms.
>
>Hope this helps.
>
>Cheers,
>Bijan.

Received on Wednesday, 15 August 2007 18:59:00 UTC