|
View:
New views
10 Messages
—
Rating Filter:
Alert me
|
|
|
Problem with "circular" restrictionHello all, I'm not a programmer (well, I used to be back in the late 90s… OO programming, of course) but I try to use Protege all the same… I am convinced it's not just for the programmer that it is useful :-) So, I apologize for my questions… I promise I won't abuse your patience. Well, I'll try to… Please tell me in case I fail ;op The problem: I have a class, let's say "Document" whose instances may have an hasRecipient from class "Recipient". "Document" instances may also have a "hasPostman" from class "Postman". "Document", "Recipient" and "Postman" are mutually disjoint. Both "Postman" and "Recipient" have subclasses, let's say - just as an example - "GoodLookingPostman" and "PoshRecipient". "GoodLookingPostman" has the following necessary restriction: "isCompetentOf some PoshRecipient". Property "isCompetentOf", as obvious, is the inverse of property "hasCompetent". Now, I create a "Document" instance with the Individuals tab. I have to red (mandatory) properties to link: hasRecipient and hasPostman. I create a new recipient from class "PoshRecipient" (i.e., the specialised one)
And her we are to the point: I want to write a restriction, somewhere, so that the reasoner can infer that the "Postman" instance actually is a "GoodLookingPostman" - since it is necessary in order to satisfy the restriction. Problem is, I always end up with a "circularity" issue like this: hasRecipient some (hasCompetent some (isPostmanOf ???)) Where I should substitute ??? with somethign that says that we are talking of the very same instance from which we started, not a generic one. Is there a way to do this? Any Idea?
Thanks in advance,
_______________________________________________ protege-owl mailing list protege-owl@... https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03 |
|
|
Re: Problem with "circular" restrictionI didn't fully understand the model that you are trying to write, but
I'll try to comment on it anyway. On Jun 26, 2008, at 3:46 AM, <andrea.brundo@...> wrote: > The problem: > > I have a class, let's say "Document" whose instances may have an > hasRecipient from class "Recipient". "Document" instances may also > have a "hasPostman" from class "Postman". "Document", "Recipient" > and "Postman" are mutually disjoint. > > Both "Postman" and "Recipient" have subclasses, let's say - just as > an example - "GoodLookingPostman" and "PoshRecipient". > > "GoodLookingPostman" has the following necessary restriction: > "isCompetentOf some PoshRecipient". Property "isCompetentOf", as > obvious, is the inverse of property "hasCompetent". > > Now, I create a "Document" instance with the Individuals tab. I have > to red (mandatory) properties to link: hasRecipient and hasPostman. > > I create a new recipient from class "PoshRecipient" (i.e., the > specialised one) > I create a new postman from class "Postman" (i.e., the generic one) > > And her we are to the point: I want to write a restriction, > somewhere, so that the reasoner can infer that the "Postman" > instance actually is a "GoodLookingPostman" - since it is necessary > in order to satisfy the restriction. > restriction, the reasoner will already conclude it. But let's assume you are asking about how to write such a restriction. I'm assuming, based in part on what follows that the restriction you want to have is that a PoshRecipient has a GoodLookingPostman > Problem is, I always end up with a "circularity" issue like this: > > hasRecipient some (hasCompetent some (isPostmanOf ???)) > Perhaps it is sufficient to write: PoshRecipient: hasCompetent some GoodLookingPostman Doe that adequately capture what you want to say? > Where I should substitute ??? with somethign that says that we are > talking of the very same instance from which we started, not a > generic one. > It may also be possible to achieve what you want by appropriate naming. Just create a named class for the restriction (isPostmanOf ???) and use that. Again, that is not going to allow you to talk about the particular instance that you want. > Is there a way to do this? Any Idea? > In general, in OWL 1.0 there is no way to write a constraint between the values of two properties. In other words, you can't express the concept "Man whose boss is his brother", since that requires equating the fillers of two different properties. For that you need a more expressive representation language than what OWL provides. OWL 1.1/2.0 has a more limited form of this where you can combine (limited) property chains with a self-reflexive assertion. But I haven't really done any work with OWL 1.1, so I can't comment effectively about how that would be used in this case. The other alternative is to use a first-order logic representation language. But then you don't get the OWL tools. _______________________________________________ protege-owl mailing list protege-owl@... https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03 |
|
|
R: Problem with "circular" restrictionThanks for your reply, Thomas.
Comments below > -----Messaggio originale----- > Da: protege-owl-bounces@... > [mailto:protege-owl-bounces@...] Per conto di > Thomas Russ > Inviato: giovedì 26 giugno 2008 19.29 > A: User support for the Protege-OWL editor > Oggetto: Re: [protege-owl] Problem with "circular" restriction > > I didn't fully understand the model that you are trying to > write, but I'll try to comment on it anyway. > > On Jun 26, 2008, at 3:46 AM, <andrea.brundo@...> wrote: > > The problem: > > > > I have a class, let's say "Document" whose instances may have an > > hasRecipient from class "Recipient". "Document" instances may also > > have a "hasPostman" from class "Postman". "Document", "Recipient" > > and "Postman" are mutually disjoint. > > > > Both "Postman" and "Recipient" have subclasses, let's say - > just as an > > example - "GoodLookingPostman" and "PoshRecipient". > > > > "GoodLookingPostman" has the following necessary restriction: > > "isCompetentOf some PoshRecipient". Property "isCompetentOf", as > > obvious, is the inverse of property "hasCompetent". > > > > Now, I create a "Document" instance with the Individuals > tab. I have > > to red (mandatory) properties to link: hasRecipient and hasPostman. > > > > I create a new recipient from class "PoshRecipient" (i.e., the > > specialised one) I create a new postman from class "Postman" (i.e., > > the generic one) > > > > And her we are to the point: I want to write a restriction, > somewhere, > > so that the reasoner can infer that the "Postman" > > instance actually is a "GoodLookingPostman" - since it is > necessary in > > order to satisfy the restriction. > > > First of all, if it is truly necessary to satisfy an existing > restriction, the reasoner will already conclude it. > > But let's assume you are asking about how to write such a > restriction. Yes, that's what I meant. Sorry if I wasn't clear. > I'm assuming, based in part on what follows > that the restriction you want to have is that > > a PoshRecipient has a GoodLookingPostman > > > Problem is, I always end up with a "circularity" issue like this: > > > > hasRecipient some (hasCompetent some (isPostmanOf ???)) > > > Perhaps it is sufficient to write: > > PoshRecipient: hasCompetent some GoodLookingPostman > > Doe that adequately capture what you want to say? This way, any instance of PoshRecipient would be requested to have such a relation. Which is an unwanted behaviour. > > > Where I should substitute ??? with somethign that says that we are > > talking of the very same instance from which we started, > not a generic > > one. > > > > It may also be possible to achieve what you want by > appropriate naming. Just create a named class for the > restriction (isPostmanOf ???) and use that. Again, that is > not going to allow you to talk about the particular instance > that you want. > Yep! > > Is there a way to do this? Any Idea? > > > In general, in OWL 1.0 there is no way to write a constraint > between the values of two properties. In other words, you > can't express the concept "Man whose boss is his brother", > since that requires equating the fillers of two different > properties. For that you need a more expressive > representation language than what OWL provides. > > OWL 1.1/2.0 has a more limited form of this where you can combine > (limited) property chains with a self-reflexive assertion. > But I haven't really done any work with OWL 1.1, so I can't > comment effectively about how that would be used in this case. I guessed that... But, unfortunately, I'm even less proficient in OWL 1.1 / 2.0 then I am in OWL 1.0! > > The other alternative is to use a first-order logic > representation language. But then you don't get the OWL tools. > Stuck in the corner... But, is there any other way I can enforce that "if a document recipient is a PoshRecipient, the Postman must be a GoodLookingPostman"? I can hardly believe there is no way to do it... > _______________________________________________ > protege-owl mailing list > protege-owl@... > https://mailman.stanford.edu/mailman/listinfo/protege-owl > > Instructions for unsubscribing: > http://protege.stanford.edu/doc/faq.html#01a.03 > _______________________________________________ protege-owl mailing list protege-owl@... https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03 |
|
|
Re: R: Problem with "circular" restrictionOn Jun 27, 2008, at 5:48 AM, <andrea.brundo@...> wrote: > > But, is there any other way I can enforce that "if a document > recipient is a PoshRecipient, the Postman must be a > GoodLookingPostman"? I can hardly believe there is no way to do it... I can think of a general way to do this, but I'm not sure exactly how to express this in OWL. What you would want to do is separate the sufficient conditions from the necessary ones. So, you would define a new class with necessary restrictions: SpecialDocument => recipient some PoshRecipient ^ hasPostman some GoodLookingPostman and then two separate sufficient conditions: recipient some PoshRecipient => SpecialDocument hasPostman some GoodLookingPostman => SpecialDocument you want to have the two separate sufficient conditions so that you would only need one of them to conclude that SpecialDocument is true, and then have the necessary conditions give you the other part of the inference you seek. This will handle the case at the document end, but it still won't create a direct connection between the recipient and the postman. I'm pretty sure that such an inference is beyond what OWL is capable of inferring. _______________________________________________ protege-owl mailing list protege-owl@... https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03 |
|
|
Re: R: Problem with "circular" restrictionHow about.
PoshRecipient -> receives only (Document and deliveredBy some GoodLookingPostman) Nick
On Fri, Jun 27, 2008 at 8:22 PM, Thomas Russ <tar@...> wrote:
_______________________________________________ protege-owl mailing list protege-owl@... https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03 |
|
|
R: R: Problem with "circular" restrictionThomas, Nick, Thanks for your support. I tried to represent you an easier case for the sake of simplicity, but it looks like I obtained the opposite. I won't repeat that mistake. The ontology I'm trying to develop is about document management. Amongst other issues, I want to manage incoming documents for different sets of users. Such documents, along with other treatment, must be labeled according to the recipient. As such, there is: - a superclass (Document) for all documents, with children defining specific categories of documents - a superclass (Recipient) for all the different sets of users (quite a taxonomy) - a superclass (Label) for all the labels (this is a taxonomy, too. But not the same tree as the set of users) - Subclasses of Recipient are mapped to subclasses of Label via the hasLabel/isLabelOf property. One of the rules I'm trying to write is this: "Documents of types 1,2 and 3 must be labeled with the label related to the recipient". As you can see, it's not for all the document types, and the relationship which has to be used in order to infer the type of the label is a relationship between the recipient and the label. Is there any way I can do this in Protege? Thanks again! Andrea
_______________________________________________ protege-owl mailing list protege-owl@... https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03 |
|
|
R: R: R: Problem with "circular" restrictionHello?
I understand my questions are somewhat not the cleariest
ones, and I really appreciate both your effort and patience in answering at the
former emails!
But... It's quite frustrating getting no answer
:p
You can also answer "buzz off until you have made your
mind clearer", if you feel to... ;oppp
Just joking, I understand it's not easy to manage such
lists and my emails really require an extra effort to
understand...
TIA, again
Andrea
_______________________________________________ protege-owl mailing list protege-owl@... https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03 |
|
|
Re: R: R: Problem with "circular" restrictionAndrea,
I'm not sure I'm completely clear on your usecase, but it seems likely that you can represent this. I would guess a superclass of the types of docs that must have a label related to recipients. Or you can just create this without the named superclass: (Document1 or Document2 or Document3) -> hasLabel some (relatedTo some Recipient) "Doc types 1, 2 or 3 must have a label related to a recipient" What you can't easily do in OWL is say the document has a recipient and this is the same as the label's recipient. Nick On Mon, Jun 30, 2008 at 2:24 PM, <andrea.brundo@...> wrote:
_______________________________________________ protege-owl mailing list protege-owl@... https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03 |
|
|
R: R: R: Problem with "circular" restrictionThanks, Nick :)
Comments below..
I
developed this use case for a reasearch of mine, I'd like to investigate
"uncommon" patterns where (this is my thesis) ontologies can
help.
This
case, it is intended to investigate some service-delivery business cases where
items must be managed in outsourcing according to not-so-clear rules initially
set by customers.
...
Which, unfortunately, seems to be my case. And, in fact, I am not easily doing
it :-) i.e., I'm not doing it at all, since I've not found a way to do it -
yet.
I
hoped Protege-OWL would have been self-sufficient for me, but maybe it is not?
Is that's the case, what plugin or else can be of help?
Scopes
and functionalities of the various SWRL, Jess, Jena, etc are quite unclear to
me...
_______________________________________________ protege-owl mailing list protege-owl@... https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03 |
|
|
Re: R: R: R: Problem with "circular" restrictionI am no SWRL expert, but it allows variables and should allow you to hook the Doc recipient and the Label recipient together.
I'll leave it up to the SWRL crew to confirm this. Nick
On Mon, Jul 7, 2008 at 1:59 PM, <andrea.brundo@...> wrote:
_______________________________________________ protege-owl mailing list protege-owl@... https://mailman.stanford.edu/mailman/listinfo/protege-owl Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03 |
| Free Forum Powered by Nabble | Forum Help |