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

RE: Some advice on inferring negated properties

From: Swanson, Tim <tim.swanson@semanticarts.com>
Date: Thu, 16 Aug 2007 12:16:41 -0600
Message-ID: <51F1B258494D5A4488C95F40E55F35D53E6383@exchsrvr.semanticarts.local>
To: "John McClure" <jmcclure@hypergrove.com>, "Matt Williams" <matthew.williams@cancer.org.uk>
Cc: <public-owl-dev@w3.org>

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:14:09 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 10 December 2014 20:07:17 UTC