- From: John McClure <jmcclure@hypergrove.com>
- Date: Thu, 16 Aug 2007 11:34:12 -0700
- To: "Swanson, Tim" <tim.swanson@semanticarts.com>, "Matt Williams" <matthew.williams@cancer.org.uk>
- Cc: <public-owl-dev@w3.org>
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