Is there a way to model these facts in OWL?

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Is there a way to model these facts in OWL?

Ling

Hi, All:

If I have a list of product names modeled as OWL individuals. And for each product, i.e. iPhone 8, it has a list of user comments. The comments are analyzed and summarized as below:

iPhone 8: owl:NamedIndividual

Price:
   PositiveCount: 600
   NegativeCount: 210
Quality:
   PositiveCount: 1600
   NegativeCount: 800

How to model these product attributes analyzed from the comments and link them to the individuals (i.e. iPhone 8 in this example)? If the user queries on the graph, it can answer questions like "What's the count of iPhone 8's positive comments on the price?"

Any thoughts on how this could be modeled in OWL? Thanks


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Is there a way to model these facts in OWL?

Michael DeBellis-2
Can you just create new attributes?  I.e., pricePositiveCount with Domain iPhone and range xsd:integer,  and similarly priceNegativeCount, qualityPositiveCount, qualityNegativeCount. 

Or if you need to associate the info with the price rather than with the phone you could create a Price class, a hasPrice object property with Domain iPhone and Range Price and then the appropriate attributes on the Price class for the price as well as for the positive and negative count and similarly create a Quality class. 

Michael

On Mon, Jan 1, 2018 at 8:23 PM, Ling <[hidden email]> wrote:

Hi, All:

If I have a list of product names modeled as OWL individuals. And for each product, i.e. iPhone 8, it has a list of user comments. The comments are analyzed and summarized as below:

iPhone 8: owl:NamedIndividual

Price:
   PositiveCount: 600
   NegativeCount: 210
Quality:
   PositiveCount: 1600
   NegativeCount: 800

How to model these product attributes analyzed from the comments and link them to the individuals (i.e. iPhone 8 in this example)? If the user queries on the graph, it can answer questions like "What's the count of iPhone 8's positive comments on the price?"

Any thoughts on how this could be modeled in OWL? Thanks


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Is there a way to model these facts in OWL?

Ling
Thanks Michael. The 1st option seems more straightforward, and the 2nd option seems more elegant.  

On Mon, Jan 1, 2018 at 8:46 PM, Michael DeBellis <[hidden email]> wrote:
Can you just create new attributes?  I.e., pricePositiveCount with Domain iPhone and range xsd:integer,  and similarly priceNegativeCount, qualityPositiveCount, qualityNegativeCount. 

Or if you need to associate the info with the price rather than with the phone you could create a Price class, a hasPrice object property with Domain iPhone and Range Price and then the appropriate attributes on the Price class for the price as well as for the positive and negative count and similarly create a Quality class. 

Michael

On Mon, Jan 1, 2018 at 8:23 PM, Ling <[hidden email]> wrote:

Hi, All:

If I have a list of product names modeled as OWL individuals. And for each product, i.e. iPhone 8, it has a list of user comments. The comments are analyzed and summarized as below:

iPhone 8: owl:NamedIndividual

Price:
   PositiveCount: 600
   NegativeCount: 210
Quality:
   PositiveCount: 1600
   NegativeCount: 800

How to model these product attributes analyzed from the comments and link them to the individuals (i.e. iPhone 8 in this example)? If the user queries on the graph, it can answer questions like "What's the count of iPhone 8's positive comments on the price?"

Any thoughts on how this could be modeled in OWL? Thanks


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Is there a way to model these facts in OWL?

Ling
Hi, Michael:

It turns out that the 2nd option may not work, and the reason is that the Domain of hasPrice can't be iPhone, but instead, it has to be the type of iPhone, which is Product, because many other products will also have attributes of Price and Quality, etc. In such a case, it seems there is no way to associate positive/negative counts of price to a particular product instance, i.e. iPhone 8.  Any further idea? Thanks.

On Mon, Jan 1, 2018 at 8:52 PM, Ling <[hidden email]> wrote:
Thanks Michael. The 1st option seems more straightforward, and the 2nd option seems more elegant.  

On Mon, Jan 1, 2018 at 8:46 PM, Michael DeBellis <[hidden email]> wrote:
Can you just create new attributes?  I.e., pricePositiveCount with Domain iPhone and range xsd:integer,  and similarly priceNegativeCount, qualityPositiveCount, qualityNegativeCount. 

Or if you need to associate the info with the price rather than with the phone you could create a Price class, a hasPrice object property with Domain iPhone and Range Price and then the appropriate attributes on the Price class for the price as well as for the positive and negative count and similarly create a Quality class. 

Michael

On Mon, Jan 1, 2018 at 8:23 PM, Ling <[hidden email]> wrote:

Hi, All:

If I have a list of product names modeled as OWL individuals. And for each product, i.e. iPhone 8, it has a list of user comments. The comments are analyzed and summarized as below:

iPhone 8: owl:NamedIndividual

Price:
   PositiveCount: 600
   NegativeCount: 210
Quality:
   PositiveCount: 1600
   NegativeCount: 800

How to model these product attributes analyzed from the comments and link them to the individuals (i.e. iPhone 8 in this example)? If the user queries on the graph, it can answer questions like "What's the count of iPhone 8's positive comments on the price?"

Any thoughts on how this could be modeled in OWL? Thanks


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user




_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Is there a way to model these facts in OWL?

Michael DeBellis-2
Ling, If I'm understanding correctly it seems this may be a case where you need to use punning. So you want to say something not about a specific iPhone8 but the class iPhone8? That is what punning is for. Punning is a very basic kind of meta-class capability. You create an object instance with the same name as the class. Normally trying to use the same name for two different objects (e.g., a class and a property) would be an error and Protege wouldn't let you do it. But having an instance with the same name as a class is permitted in OWL just for these kinds of situations. You can then associate the properties with the instance. I usually create a class for all my punned objects called MetaClass or something like that since you don't want them to be instances of the class itself.  I.e., the class iPhone8 is not itself an iPhone8 but OWL is pretty lenient and will let you define the class as anything you want or of course you may not even bother defining it's type and just let it be a Thing. 



On Mon, Jan 1, 2018 at 10:14 PM, Ling <[hidden email]> wrote:
Hi, Michael:

It turns out that the 2nd option may not work, and the reason is that the Domain of hasPrice can't be iPhone, but instead, it has to be the type of iPhone, which is Product, because many other products will also have attributes of Price and Quality, etc. In such a case, it seems there is no way to associate positive/negative counts of price to a particular product instance, i.e. iPhone 8.  Any further idea? Thanks.

On Mon, Jan 1, 2018 at 8:52 PM, Ling <[hidden email]> wrote:
Thanks Michael. The 1st option seems more straightforward, and the 2nd option seems more elegant.  

On Mon, Jan 1, 2018 at 8:46 PM, Michael DeBellis <[hidden email]> wrote:
Can you just create new attributes?  I.e., pricePositiveCount with Domain iPhone and range xsd:integer,  and similarly priceNegativeCount, qualityPositiveCount, qualityNegativeCount. 

Or if you need to associate the info with the price rather than with the phone you could create a Price class, a hasPrice object property with Domain iPhone and Range Price and then the appropriate attributes on the Price class for the price as well as for the positive and negative count and similarly create a Quality class. 

Michael

On Mon, Jan 1, 2018 at 8:23 PM, Ling <[hidden email]> wrote:

Hi, All:

If I have a list of product names modeled as OWL individuals. And for each product, i.e. iPhone 8, it has a list of user comments. The comments are analyzed and summarized as below:

iPhone 8: owl:NamedIndividual

Price:
   PositiveCount: 600
   NegativeCount: 210
Quality:
   PositiveCount: 1600
   NegativeCount: 800

How to model these product attributes analyzed from the comments and link them to the individuals (i.e. iPhone 8 in this example)? If the user queries on the graph, it can answer questions like "What's the count of iPhone 8's positive comments on the price?"

Any thoughts on how this could be modeled in OWL? Thanks


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user




_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Is there a way to model these facts in OWL?

Ling
Hi, Michael:

      Actually it's not exactly about punning. I give add one more instance to the model  and hopefully to make it clearer:

   Product: owl:Class 
         iPhone 8: owl:NamedIndividual
         Amazon Echo: owl:NamedIndividual
    ...
   
   And each individual will have Price, Qualty etc. attributes. So the domain of hasPrice or hasQuality property has to be the "Product" class, not the individual iPhone 8 or Amazon Echo. In your suggested both option 1 and option 2, do you mean creating 'phone' as a class or an individual, when you used the term "domain iPhone"?  In my class, I want a Product class and individuals under it. And in such a hierarchy, I want to associate the counts to each individual (each specific product). 

Thanks. 


On Tue, Jan 2, 2018 at 6:47 AM, Michael DeBellis <[hidden email]> wrote:
Ling, If I'm understanding correctly it seems this may be a case where you need to use punning. So you want to say something not about a specific iPhone8 but the class iPhone8? That is what punning is for. Punning is a very basic kind of meta-class capability. You create an object instance with the same name as the class. Normally trying to use the same name for two different objects (e.g., a class and a property) would be an error and Protege wouldn't let you do it. But having an instance with the same name as a class is permitted in OWL just for these kinds of situations. You can then associate the properties with the instance. I usually create a class for all my punned objects called MetaClass or something like that since you don't want them to be instances of the class itself.  I.e., the class iPhone8 is not itself an iPhone8 but OWL is pretty lenient and will let you define the class as anything you want or of course you may not even bother defining it's type and just let it be a Thing. 



On Mon, Jan 1, 2018 at 10:14 PM, Ling <[hidden email]> wrote:
Hi, Michael:

It turns out that the 2nd option may not work, and the reason is that the Domain of hasPrice can't be iPhone, but instead, it has to be the type of iPhone, which is Product, because many other products will also have attributes of Price and Quality, etc. In such a case, it seems there is no way to associate positive/negative counts of price to a particular product instance, i.e. iPhone 8.  Any further idea? Thanks.

On Mon, Jan 1, 2018 at 8:52 PM, Ling <[hidden email]> wrote:
Thanks Michael. The 1st option seems more straightforward, and the 2nd option seems more elegant.  

On Mon, Jan 1, 2018 at 8:46 PM, Michael DeBellis <[hidden email]> wrote:
Can you just create new attributes?  I.e., pricePositiveCount with Domain iPhone and range xsd:integer,  and similarly priceNegativeCount, qualityPositiveCount, qualityNegativeCount. 

Or if you need to associate the info with the price rather than with the phone you could create a Price class, a hasPrice object property with Domain iPhone and Range Price and then the appropriate attributes on the Price class for the price as well as for the positive and negative count and similarly create a Quality class. 

Michael

On Mon, Jan 1, 2018 at 8:23 PM, Ling <[hidden email]> wrote:

Hi, All:

If I have a list of product names modeled as OWL individuals. And for each product, i.e. iPhone 8, it has a list of user comments. The comments are analyzed and summarized as below:

iPhone 8: owl:NamedIndividual

Price:
   PositiveCount: 600
   NegativeCount: 210
Quality:
   PositiveCount: 1600
   NegativeCount: 800

How to model these product attributes analyzed from the comments and link them to the individuals (i.e. iPhone 8 in this example)? If the user queries on the graph, it can answer questions like "What's the count of iPhone 8's positive comments on the price?"

Any thoughts on how this could be modeled in OWL? Thanks


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user




_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Is there a way to model these facts in OWL?

samsontu
A couple comments:

1. Is there a good reason for modeling iPhone 8 as an individual? How do you deal with the fact that iPhone 8s with different amount of memory have different prices?

2. It seems to me that you have an n-ary relation (product, price, count) situation rather than a meta-model situation.

With best regards,
Samson


On Jan 2, 2018, at 8:49 PM, Ling <[hidden email]> wrote:

Hi, Michael:

      Actually it's not exactly about punning. I give add one more instance to the model  and hopefully to make it clearer:

   Product: owl:Class 
         iPhone 8: owl:NamedIndividual
         Amazon Echo: owl:NamedIndividual
    ...
   
   And each individual will have Price, Qualty etc. attributes. So the domain of hasPrice or hasQuality property has to be the "Product" class, not the individual iPhone 8 or Amazon Echo. In your suggested both option 1 and option 2, do you mean creating 'phone' as a class or an individual, when you used the term "domain iPhone"?  In my class, I want a Product class and individuals under it. And in such a hierarchy, I want to associate the counts to each individual (each specific product). 

Thanks. 


On Tue, Jan 2, 2018 at 6:47 AM, Michael DeBellis <[hidden email]> wrote:
Ling, If I'm understanding correctly it seems this may be a case where you need to use punning. So you want to say something not about a specific iPhone8 but the class iPhone8? That is what punning is for. Punning is a very basic kind of meta-class capability. You create an object instance with the same name as the class. Normally trying to use the same name for two different objects (e.g., a class and a property) would be an error and Protege wouldn't let you do it. But having an instance with the same name as a class is permitted in OWL just for these kinds of situations. You can then associate the properties with the instance. I usually create a class for all my punned objects called MetaClass or something like that since you don't want them to be instances of the class itself.  I.e., the class iPhone8 is not itself an iPhone8 but OWL is pretty lenient and will let you define the class as anything you want or of course you may not even bother defining it's type and just let it be a Thing. 



On Mon, Jan 1, 2018 at 10:14 PM, Ling <[hidden email]> wrote:
Hi, Michael:

It turns out that the 2nd option may not work, and the reason is that the Domain of hasPrice can't be iPhone, but instead, it has to be the type of iPhone, which is Product, because many other products will also have attributes of Price and Quality, etc. In such a case, it seems there is no way to associate positive/negative counts of price to a particular product instance, i.e. iPhone 8.  Any further idea? Thanks.

On Mon, Jan 1, 2018 at 8:52 PM, Ling <[hidden email]> wrote:
Thanks Michael. The 1st option seems more straightforward, and the 2nd option seems more elegant.  

On Mon, Jan 1, 2018 at 8:46 PM, Michael DeBellis <[hidden email]> wrote:
Can you just create new attributes?  I.e., pricePositiveCount with Domain iPhone and range xsd:integer,  and similarly priceNegativeCount, qualityPositiveCount, qualityNegativeCount. 

Or if you need to associate the info with the price rather than with the phone you could create a Price class, a hasPrice object property with Domain iPhone and Range Price and then the appropriate attributes on the Price class for the price as well as for the positive and negative count and similarly create a Quality class. 

Michael

On Mon, Jan 1, 2018 at 8:23 PM, Ling <[hidden email]> wrote:

Hi, All:

If I have a list of product names modeled as OWL individuals. And for each product, i.e. iPhone 8, it has a list of user comments. The comments are analyzed and summarized as below:

iPhone 8: owl:NamedIndividual

Price:
   PositiveCount: 600
   NegativeCount: 210
Quality:
   PositiveCount: 1600
   NegativeCount: 800

How to model these product attributes analyzed from the comments and link them to the individuals (i.e. iPhone 8 in this example)? If the user queries on the graph, it can answer questions like "What's the count of iPhone 8's positive comments on the price?"

Any thoughts on how this could be modeled in OWL? Thanks


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user




_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: Is there a way to model these facts in OWL?

Michael DeBellis-2
Samson,  the n-ary relation was my first thought as well, that was what I was trying to get at in my solution number 2 in my first response in an earlier reply. Also, if I'm now understanding what Ling is doing she doesn't have any specific iPhones in her ontology.  That was my confusion in my last response, I thought that iPhone8 would be a class with instances for specifics iPhones like MichaelsiPhone but now I think (Ling please correct if I'm wrong) that it's just an ontology describing the different product types but not actual individual products. I.e., when Ling says "I want to associate the counts to each individual (each specific product)" I think she means individual product type such as iPhone8 but not specific iPhone8's. 

Ling, I wasn't being very careful with the names I used for the classes in my earlier first response. I just said "iPhone" but after I was thinking that having a class that subsumed iPhone such as Product would probably be the right solution. The way you describe it in your last message makes sense to me.  Essentially make the domain as general as you need it, as high up in the class hierarchy as it needs to be. 

BTW, you probably know this but it is also an option to not specify the domain or range. My impression is that different people have different styles and that some people encourage not defining domains and/or ranges and letting the reasoner figure them out. My background is software engineering and formal methods so I'm more toward the philosophy of being as rigorous as possible because defining domains and ranges in my experience helps me find errors in a model much sooner than if I leave them undefined. 

The bottom line is I think what you described in the last paragraph of your last message sounds like it should work. If you are still having questions my suggestion would be (if you don't have issues with confidentiality) to include your ontology in the next message. Sorry for the confusion, hope we've finally figured it out. 

Michael

On Tue, Jan 2, 2018 at 10:19 PM, Samson Tu <[hidden email]> wrote:
A couple comments:

1. Is there a good reason for modeling iPhone 8 as an individual? How do you deal with the fact that iPhone 8s with different amount of memory have different prices?

2. It seems to me that you have an n-ary relation (product, price, count) situation rather than a meta-model situation.

With best regards,
Samson


On Jan 2, 2018, at 8:49 PM, Ling <[hidden email]> wrote:

Hi, Michael:

      Actually it's not exactly about punning. I give add one more instance to the model  and hopefully to make it clearer:

   Product: owl:Class 
         iPhone 8: owl:NamedIndividual
         Amazon Echo: owl:NamedIndividual
    ...
   
   And each individual will have Price, Qualty etc. attributes. So the domain of hasPrice or hasQuality property has to be the "Product" class, not the individual iPhone 8 or Amazon Echo. In your suggested both option 1 and option 2, do you mean creating 'phone' as a class or an individual, when you used the term "domain iPhone"?  In my class, I want a Product class and individuals under it. And in such a hierarchy, I want to associate the counts to each individual (each specific product). 

Thanks. 


On Tue, Jan 2, 2018 at 6:47 AM, Michael DeBellis <[hidden email]> wrote:
Ling, If I'm understanding correctly it seems this may be a case where you need to use punning. So you want to say something not about a specific iPhone8 but the class iPhone8? That is what punning is for. Punning is a very basic kind of meta-class capability. You create an object instance with the same name as the class. Normally trying to use the same name for two different objects (e.g., a class and a property) would be an error and Protege wouldn't let you do it. But having an instance with the same name as a class is permitted in OWL just for these kinds of situations. You can then associate the properties with the instance. I usually create a class for all my punned objects called MetaClass or something like that since you don't want them to be instances of the class itself.  I.e., the class iPhone8 is not itself an iPhone8 but OWL is pretty lenient and will let you define the class as anything you want or of course you may not even bother defining it's type and just let it be a Thing. 



On Mon, Jan 1, 2018 at 10:14 PM, Ling <[hidden email]> wrote:
Hi, Michael:

It turns out that the 2nd option may not work, and the reason is that the Domain of hasPrice can't be iPhone, but instead, it has to be the type of iPhone, which is Product, because many other products will also have attributes of Price and Quality, etc. In such a case, it seems there is no way to associate positive/negative counts of price to a particular product instance, i.e. iPhone 8.  Any further idea? Thanks.

On Mon, Jan 1, 2018 at 8:52 PM, Ling <[hidden email]> wrote:
Thanks Michael. The 1st option seems more straightforward, and the 2nd option seems more elegant.  

On Mon, Jan 1, 2018 at 8:46 PM, Michael DeBellis <[hidden email]> wrote:
Can you just create new attributes?  I.e., pricePositiveCount with Domain iPhone and range xsd:integer,  and similarly priceNegativeCount, qualityPositiveCount, qualityNegativeCount. 

Or if you need to associate the info with the price rather than with the phone you could create a Price class, a hasPrice object property with Domain iPhone and Range Price and then the appropriate attributes on the Price class for the price as well as for the positive and negative count and similarly create a Quality class. 

Michael

On Mon, Jan 1, 2018 at 8:23 PM, Ling <[hidden email]> wrote:

Hi, All:

If I have a list of product names modeled as OWL individuals. And for each product, i.e. iPhone 8, it has a list of user comments. The comments are analyzed and summarized as below:

iPhone 8: owl:NamedIndividual

Price:
   PositiveCount: 600
   NegativeCount: 210
Quality:
   PositiveCount: 1600
   NegativeCount: 800

How to model these product attributes analyzed from the comments and link them to the individuals (i.e. iPhone 8 in this example)? If the user queries on the graph, it can answer questions like "What's the count of iPhone 8's positive comments on the price?"

Any thoughts on how this could be modeled in OWL? Thanks


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user




_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user



_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user