- From: Michael Schneider <schneid@fzi.de>
- Date: Fri, 23 Apr 2010 16:15:37 +0200
- To: "William Koscho" <wkoscho@gmail.com>
- Cc: <public-owl-dev@w3.org>
>-----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