RE: Help with a Restriction

>-----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
>port3

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!

>Thanks
>Bill

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,
>you
>> 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,
>>>Bill
>>>

--
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 Friday, 23 April 2010 14:16:18 UTC