W3C home > Mailing lists > Public > public-owl-dev@w3.org > April to June 2010

Re: Help with a Restriction

From: William Koscho <wkoscho@gmail.com>
Date: Fri, 23 Apr 2010 23:43:09 -0400
Message-ID: <w2gd8e975631004232043sf1d43c66vacd0f539119e3213@mail.gmail.com>
To: Michael Schneider <schneid@fzi.de>
Cc: public-owl-dev@w3.org
Hi Michael,

Thanks again for the detailed reply.  To make sure I understand
correctly, the PropertyChainAxiom by itself will infer triples when
the property chain is matched, right?  But asserting the NPAs is what
causes the inconsistency to be reported, right?

thanks in advance,

On Fri, Apr 23, 2010 at 10:15 AM, Michael Schneider <schneid@fzi.de> wrote:
>>-----Original Message-----
>>From: William Koscho [mailto:wkoscho@gmail.com]
>>Sent: Friday, April 23, 2010 3:16 PM
>>To: Michael Schneider
>>Cc: public-owl-dev@w3.org
>>Subject: Re: Help with a Restriction
>>Hi Michael,
>>I would actually like bindTo to be symmetric, so port1 and port2 can
>>both bindTo each other.
>>However, given
>>component3 rdf:type Component
>>port3 rdf:type Port
>>component3 exposes port3
>>The following is /not/ allowed: port2 bindTo port3 nor is port1 bindTo
> Regrettably, OWL will not help you with this set of axioms, since you cannot
> tell for sure that component3 is /really not/ a parent of the other two
> components. You cannot entail that it is wrong from the information you
> provide, hence there exist interpretations for which component3 is in fact a
> parent of the other components (and other interpretations exist as well for
> which it is /not/ the case, of course, for example the interpretation that
> you probably have in mind). It's the open world assumption (OWA) that hits
> us here again.
> What you (at least!) need to make sure is that OWL can safely entail that
>    component1 belongTo component3 // must not hold
> does *not* hold. Only then there exists a *chance* to come close to what you
> want.
> Well, asserting the above "negative information" is indeed possible with OWL
> 2, using /negative property assertions/ (NPAs) (actually, it's even possible
> in OWL 1, but it's a mess there):
>    NPA( component1 belongTo component3 )
> Please lookup the RDF encoding of NPAs in the OWL 2 RDF Mapping [1]. I did
> not use it here, since its bulky encoding would only confuse people.
> Now, that's not yet enough, because you want to get a logical contradiction,
> if people connect the /ports/ of component1 and component3, but a
> contradiction with the above NPA can only occur if the triple "component1
> belongsTo component3" is stated or entailed. So, we need additional OWL that
> leads from the connection of two ports to a parent relationship between the
> associated components. This is, admittedly, not nice, because it is not
> really what you want to express in your ontology. But, I'm afraid, I see no
> better alternative at the moment. :-( So let's get tough!
> What we need is some OWL axiom that corresponds to the following "rule":
>    IF (?componentX exposes ?portX) AND
>        (?portX bindTo ?portY) AND
>        (?portY exposedBy ?componentY)
>    THEN (?componentX belongsTo ?componentY)
> Note that, sadly, this rule is in conflict with your desired symmetry of
> bindTo, since with this rule the parent relationship becomes symmetric as
> well! But I can't see a better approach, sorry again.
> At least, the above rule can be expressed in OWL 2 by means of sub property
> chains:
>    belongsTo owl:propertyChainAxiom ( exposes bindTo exposedBy )
> Now, we are essentially done: you will receive a contradiction in your
> knowledge base, if someone tries to connect port1 to port3 in our example. I
> believe, however, that you will be far from happy with this solution. But,
> at least with the limited time I can spend for writing this mail, I see no
> better way.
>>Also, no two Components can expose the same Port.
> This means that the property 'exposes' is inverse-functional:
>    exposes rdf:type owl:InverseFunctionalProperty .
> But note that this does not stop people from "trying" to bind two components
> to the same port. Rather, OWL will in such a case entail that the two
> components are identical:
>     componentX bindTo portZ
>     componentY bindTo portZ
>     -----------------------
>     |= componentX owl:sameAs componentY
> This might not be what you want. It's again the OWA that comes into play...
> After all, OWL is an inferencing language, not an integrity constraint
> checking language!
> Michael
> [1] http://www.w3.org/TR/2009/REC-owl2-mapping-to-rdf-20091027/
>>On 4/23/10, Michael Schneider <schneid@fzi.de> wrote:
>>> William,
>>> before I or anyone else can start to find an answer to your question,
>>> should clarify your question a bit. From what I am reading, it sounds
>>to me
>>> that you want to restrict the application of the 'bindTo' property to
>>> situations as in the following example:
>>>   // declarations:
>>>   component1 rdf:type Component .
>>>   component2 rdf:type Component .
>>>   port1 rdf:type Port .
>>>   port2 rdf:type Port .
>>>   // component2 is parent of component1:
>>>   component1 belongsTo component2 .
>>>   // both components expose some port each:
>>>   component1 exposes port1 .
>>>   component2 exposes port2 .
>>>   // component1's port is being bind
>>>   // to its parent's port:
>>>   port1 bindTo port2 .
>>>   // *not* allowed:
>>>   //   port2 bindTo port1
>>>   // since port1 is /not/ exposed by a parent component
>>>   // of port2's associated component
>>> Please confirm whether this is what you have in mind as a valid
>>scenario, or
>>> say where I got you wrong.
>>> Michael
>>>>-----Original Message-----
>>>>From: public-owl-dev-request@w3.org [mailto:public-owl-dev-
>>>>request@w3.org] On Behalf Of William Koscho
>>>>Sent: Thursday, April 22, 2010 9:43 PM
>>>>To: public-owl-dev@w3.org
>>>>Subject: Help with a Restriction
>>>>Hi All,
>>>>I'm modeling a few software architecture concepts and am having
>>>>trouble with one particular restriction that I'm hoping someone can
>>>>help with?
>>>>Using OWL2, how can I restrict a Port to only bindTo another Port that
>>>>is exposedBy the parent Component.
>>>>My ontology is defined as follows:
>>>>There are 2 sibling classes:
>>>> Component
>>>> Port
>>>>There are 3 properties with the following domain/ranges:
>>>> Component exposes Port (inverse-of exposedBy)
>>>> Port exposedBy Component (inverse-of exposes)
>>>> Component composedOf Component (inverse-of belongsTo)
>>>> Component belongsTo Component (inverse-of composedOf)
>>>> Port bindTo Port
>>>>Thanks in advance,
> --
> Dipl.-Inform. Michael Schneider
> Research Scientist, Information Process Engineering (IPE)
> Tel  : +49-721-9654-726
> Fax  : +49-721-9654-727
> Email: michael.schneider@fzi.de
> WWW  : http://www.fzi.de/michael.schneider
> =======================================================================
> FZI Forschungszentrum Informatik an der Universität Karlsruhe
> Haid-und-Neu-Str. 10-14, D-76131 Karlsruhe
> Tel.: +49-721-9654-0, Fax: +49-721-9654-959
> Stiftung des bürgerlichen Rechts, Az 14-0563.1, RP Karlsruhe
> Vorstand: Prof. Dr.-Ing. Rüdiger Dillmann, Dipl. Wi.-Ing. Michael Flor,
> Prof. Dr. Dr. h.c. Wolffried Stucky, Prof. Dr. Rudi Studer
> Vorsitzender des Kuratoriums: Ministerialdirigent Günther Leßnerkraus
> =======================================================================
Received on Saturday, 24 April 2010 03:43:42 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 20:58:19 UTC