RE: Some advice on inferring negated properties

This is good, but how do you say the restriction holds for ALL property values,
not just #b?

Thanks.

>-----Original Message-----
>From: public-owl-dev-request@w3.org
>[mailto:public-owl-dev-request@w3.org]On Behalf Of Swanson, Tim
>Sent: Thursday, August 16, 2007 11:17 AM
>To: John McClure; Matt Williams
>Cc: public-owl-dev@w3.org
>Subject: RE: Some advice on inferring negated properties
>
>
>
>Am I missing something here? It seems to me that, in order to say that
>the property assertion (a P b) does not hold, you can say this:
>
><owl:Thing rdf:about="#a">
>  <rdf:type>
>    <owl:Class>
>      <owl:complementOf>
>        <owl:Restriction>
>          <owl:onProperty rdf:resource="#P"/>
>          <owl:hasValue rdf:resource="#b"/>
>        </owl:Restriction>
>      </owl:complementOf>
>    </owl:Class>
>  </rdf:type>
></owl:Thing>
>
>Although this seems verbose (especially in RDF/XML), it's really just
>saying that 'a' is not a member of the set of things that have the
>property 'P' with the filler 'b'.
>
>An approach like the one Bijan suggested:
>
>> >	ClassAssertion(a, ObjectMaxCardinality(0, P, owl:Thing))
>> >	ClassAssertion(b, owl:Thing)
>
>Is making the more general assertion that a cannot have /any/
>instances of property P.
>
>The approach I've outlined above seems to make the assertion that a
>specific property relationship is negated, and nothing else. We've
>used this in our applications, so I'd like to know if we have an
>incorrect understanding.
>
>
>Thank You,
>
>Tim Swanson
>Semantic Arts, Inc.
>Fort Collins, Colorado
>
>
>> -----Original Message-----
>> From: public-owl-dev-request@w3.org [mailto:public-owl-dev-
>> request@w3.org] On Behalf Of John McClure
>> Sent: Wednesday, August 15, 2007 12:59 PM
>> To: Matt Williams
>> Cc: public-owl-dev@w3.org
>> Subject: 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 Thursday, 16 August 2007 18:33:56 UTC