About the Approach 1, Representing Classes As Property Values on the Semantic Web

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

About the Approach 1, Representing Classes As Property Values on the Semantic Web

Sw Fan
Dear all, 

I've a question about the example for the Approach 1 in Representing Classes As Property Values on the Semantic Web. Below is the text extracted from the document:

{{

For instance, we may want to define a class of all books about animals—BookAboutAnimals—that
our animal books will be instances of and we want to restrict the range of
values for the dc:subject property for the BookAboutAnimals
class to the class Animal and its subclasses. One way to define
such restriction is as follows:

:BookAboutAnimals
      a owl:Class ;
      rdfs:subClassOf :Book ;
      rdfs:subClassOf
              [ a owl:Class ;
                owl:unionOf ([ a owl:Restriction ;
                               owl:onProperty dc:subject ;
                               owl:hasValue Animal
                             ] 
                             [ a owl:Restriction ;
                               owl:onProperty dc:subject ;
                               owl:someValuesFrom
                                    [ a owl:Restriction ;
                                      owl:onProperty rdfs:subClassOf;
                                      owl:hasValue Animal 
                                    ]
                          ])
              ] .

}}

My question is, why do we have to bother defining a union class above? Since a class is a subclass of itself, so from my understanding,

                [ a owl:Restriction ;
                               owl:onProperty dc:subject ;
                               owl:hasValue Animal
                             ]

has been subsumed by

                             [ a owl:Restriction ;
                               owl:onProperty dc:subject ;
                               owl:someValuesFrom
                                    [ a owl:Restriction ;
                                      owl:onProperty rdfs:subClassOf;
                                      owl:hasValue Animal 
                                    ]
]


Is there anything I missed here? Thank you!

Best,
Mark

Reply | Threaded
Open this post in threaded view
|

Re: About the Approach 1, Representing Classes As Property Values on the Semantic Web

Natasha Noy
Dear Mark,

I  think you are right -- we didn't technically need the first  
statement as any class is by definition a subclass of itself. It  
doesn't hurt to have it there as it makes things a bit more clear  
(perhaps?)

Natasha


On Mar 27, 2009, at 2:09 AM, Sw Fan wrote:

> Dear all,
>
> I've a question about the example for the Approach 1 in Representing  
> Classes As Property Values on the Semantic Web. Below is the text  
> extracted from the document:
>
> {{
>
> For instance, we may want to define a class of all books about  
> animals—BookAboutAnimals—that
> our animal books will be instances of and we want to restrict the  
> range of
> values for the dc:subject property for the BookAboutAnimals
> class to the class Animal and its subclasses. One way to define
> such restriction is as follows:
>
> :BookAboutAnimals
>       a owl:Class ;
>       rdfs:subClassOf :Book ;
>
>  rdfs:subClassOf
>               [ a owl:Class ;
>                 owl:unionOf ([ a owl:Restriction ;
>                                owl:onProperty dc:subject ;
>                                owl:hasValue Animal
>
>  ]
>                              [ a owl:Restriction ;
>                                owl:onProperty dc:subject ;
>                                owl:someValuesFrom
>                                     [ a owl:Restriction
>  ;
>                                       owl:onProperty rdfs:subClassOf;
>                                       owl:hasValue Animal
>                                     ]
>                           ])
>
>  ] .
>
> }}
>
> My question is,  why do we have to bother defining a union class  
> above? Since a class is a subclass of itself, so from my  
> understanding,
>
>                              [ a owl:Restriction ;
>                                owl:onProperty dc:subject ;
>                                owl:hasValue Animal
>                              ]
>
> has been subsumed by
>
>
>                              [ a owl:Restriction ;
>                                owl:onProperty dc:subject ;
>                                owl:someValuesFrom
>                                     [ a owl:Restriction
>  ;
>                                       owl:onProperty rdfs:subClassOf;
>                                       owl:hasValue Animal
>                                     ]
>                              ]
>
>
> Is there anything I missed here? Thank you!
>
> Best,
> Mark
>
>


Reply | Threaded
Open this post in threaded view
|

Re: About the Approach 1, Representing Classes As Property Values on the Semantic Web

Sw Fan
Dear Natasha,
 
Thanks for your reply!
 
I understand that it makes things a bit more clear for illustration purposes. But I don't think it's the *best* practice for real world situations.
Best,
Mark


From: Natasha Noy <[hidden email]>
To: Sw Fan <[hidden email]>
Cc: [hidden email]
Sent: Friday, April 3, 2009 2:02:03 AM
Subject: Re: About the Approach 1, Representing Classes As Property Values on the Semantic Web

Dear Mark,

I  think you are right -- we didn't technically need the first statement as any class is by definition a subclass of itself. It doesn't hurt to have it there as it makes things a bit more clear (perhaps?)

Natasha


On Mar 27, 2009, at 2:09 AM, Sw Fan wrote:

> Dear all,
>
> I've a question about the example for the Approach 1 in Representing Classes As Property Values on the Semantic Web. Below is the text extracted from the document:
>
> {{
>
> For instance, we may want to define a class of all books about animals—BookAboutAnimals—that
> our animal books will be instances of and we want to restrict the range of
> values for the dc:subject property for the BookAboutAnimals
> class to the class Animal and its subclasses. One way to define
> such restriction is as follows:
>
> :BookAboutAnimals
>      a owl:Class ;
>      rdfs:subClassOf :Book ;
>
>  rdfs:subClassOf
>              [ a owl:Class ;
>                owl:unionOf ([ a owl:Restriction ;
>                                owl:onProperty dc:subject ;
>                                owl:hasValue Animal
>
>  ]
>                              [ a owl:Restriction ;
>                                owl:onProperty dc:subject ;
>                                owl:someValuesFrom
>                                    [ a owl:Restriction
>  ;
>                                      owl:onProperty rdfs:subClassOf;
>                                      owl:hasValue Animal
>                                    ]
>                          ])
>
>  ] .
>
> }}
>
> My question is,  why do we have to bother defining a union class above? Since a class is a subclass of itself, so from my understanding,
>
>                              [ a owl:Restriction ;
>                                owl:onProperty dc:subject ;
>                                owl:hasValue Animal
>                              ]
>
> has been subsumed by
>
>
>                              [ a owl:Restriction ;
>                                owl:onProperty dc:subject ;
>                                owl:someValuesFrom
>                                    [ a owl:Restriction
>  ;
>                                      owl:onProperty rdfs:subClassOf;
>                                      owl:hasValue Animal
>                                    ]
>                              ]
>
>
> Is there anything I missed here? Thank you!
>
> Best,
> Mark
>
>


Reply | Threaded
Open this post in threaded view
|

Re: About the Approach 1, Representing Classes As Property Values on the Semantic Web

Bene Rodriguez
In reply to this post by Natasha Noy
Dear Natasha, all,

I was revisiting Approach 1 of Representing Classes As Property Values
on the Semantic Web (http://www.w3.org/TR/swbp-classes-as-values/) and I
came across some questions that I would like to capture below.

Regarding the declaration of :BookAboutAnimals in Approach 1.
It seems that the implementation of :BookAboutAnimals listed online as
an N3 snippet as part of subsection "Considerations when choosing
approach 1:", does not match the implementation found in the [N3]
[RDF/XML] files provided in subsection "OWL code for approach 1" listed
below:

- [N3] http://www.w3.org/TR/swbp-classes-as-values/books1.n3
- [RDF/XML] http://www.w3.org/TR/swbp-classes-as-values/books1.owl

The declaration of :BookAboutAnimals found in the [N3] file above is as
follows:

13 default:BookAboutAnimals
14       a       owl:Class ;
15       rdfs:subClassOf owl:Thing ;
16       rdfs:subClassOf
17               [ a       owl:Class ;
18                 owl:unionOf ([ a       owl:Restriction ;
19                             owl:onProperty dc:subject ;
20                             owl:someValuesFrom default:Animal
21                           ] [ a       owl:Restriction ;
22                             owl:onProperty dc:subject ;
23                             owl:someValuesFrom
24                                     [ a       owl:Restriction ;
25                                       owl:hasValue default:Animal ;
26                                       owl:onProperty p1:subClassOf
27                                     ]
28                           ])
29               ] .

If we compare the declaration above to that on the snippet listed
online, two mismatches can be seen:

1) [N3] file, line 26: "p1:subClassOf" seems to be a typo for
"rdfs:subClassOf".
2) [N3] file, line 20: "owl:someValuesFrom default:Animal" is
"owl:hasValue Animal" on the snippet listed online.

There is also a new owl:ObjectProperty declared, "p1:subClassOf" on line
47, I guess because of 1).

In this sense, my questions would be:

- Regarding 1). What was the actual intent? If the intended property is
in fact rdfs:subClassOf, would we want to apply an OWL restriction on a
property that is part of the RDF-Schema definition? Wouldn't this turn
rdfs:subClassOf into an owl:ObjectProperty as a side effect also,
creating a somewhat odd meta-modeling scenario?

- Regarding 2). What was the intended restriction? owl:someValuesFrom as
in line 20 above, or owl:hasValue as in the N3 fragment given online? If
the intended one is owl:hasValue as in the fragment online, the expected
value would be an individual, while "Animal" is a class. Is this re-use
of the class "Animal" as value of the property owl:hasValue, also part
of what Approach 1 is trying to illustrate?

I believe these mismatches between the N3 fragment given online and the
[N3] file provided, leave some room for ambiguity on what the intended
implementation of Approach 1 is. Would it be possible to consolidate
these two sources as originally intended?

Thanks a lot,
Bene Rodriguez

P.S. Some additional info:
These mismatches seem to have propagated to the [RDF/XML] file pointed
to above as well with a few additional variations.
Comparing the contents of the [RDF/XML] file version (omitted for
clarity, please view contents on external editor), to that on the
snippet listed online, we can see:

3) [RDF/XML] file, line 14: A new class "BooksAboutAnimal2" is
introduced that seems to correspond to ":BookAboutAnimals" on the online
snippet.
4) [RDF/XML] file, line 32: Again, the property "rdfssubclassof" seems a
typo for "rdfs:subClassOf".
5) [RDF/XML] file, lines 23-25: Again, the restriction
"owl:someValuesFrom" is a "owl:hasValue" on the snippet listed online.
6) [RDF/XML] file, line 44: There is a class "BookAboutAnimals" that
does not correspond to ":BookAboutAnimals" on the online snippet.
7) [RDF/XML] file, line 51: A new class "#AnimalClass" is introduced
that is not part of the original example.

 From 3) to 7), it seems that the [RDF/XML] serialization does not
correspond to the [N3] version provided and adds a couple of mismatches,
which again, makes a bit tricky to guess the originally intended
implementation.

--
Research Associate
E-Business and Web Science Research Group
Department of General Management and E-Business
Universitaet der Bundeswehr Munich (Germany)
p: +49 89 6004-2849
e: [hidden email]
w: http://purl.org/beroca

On 2/4/09 8:02 PM, Natasha Noy wrote:

> Dear Mark,
>
> I  think you are right -- we didn't technically need the first
> statement as any class is by definition a subclass of itself. It
> doesn't hurt to have it there as it makes things a bit more clear
> (perhaps?)
>
> Natasha
>
>
> On Mar 27, 2009, at 2:09 AM, Sw Fan wrote:
>
>> Dear all,
>>
>> I've a question about the example for the Approach 1 in Representing
>> Classes As Property Values on the Semantic Web. Below is the text
>> extracted from the document:
>>
>> {{
>>
>> For instance, we may want to define a class of all books about
>> animals—BookAboutAnimals—that
>> our animal books will be instances of and we want to restrict the
>> range of
>> values for the dc:subject property for the BookAboutAnimals
>> class to the class Animal and its subclasses. One way to define
>> such restriction is as follows:
>>
>> :BookAboutAnimals
>>        a owl:Class ;
>>        rdfs:subClassOf :Book ;
>>
>>   rdfs:subClassOf
>>                [ a owl:Class ;
>>                  owl:unionOf ([ a owl:Restriction ;
>>                                 owl:onProperty dc:subject ;
>>                                 owl:hasValue Animal
>>
>>   ]
>>                               [ a owl:Restriction ;
>>                                 owl:onProperty dc:subject ;
>>                                 owl:someValuesFrom
>>                                      [ a owl:Restriction
>>   ;
>>                                        owl:onProperty rdfs:subClassOf;
>>                                        owl:hasValue Animal
>>                                      ]
>>                            ])
>>
>>   ] .
>>
>> }}
>>
>> My question is,  why do we have to bother defining a union class
>> above? Since a class is a subclass of itself, so from my
>> understanding,
>>
>>                               [ a owl:Restriction ;
>>                                 owl:onProperty dc:subject ;
>>                                 owl:hasValue Animal
>>                               ]
>>
>> has been subsumed by
>>
>>
>>                               [ a owl:Restriction ;
>>                                 owl:onProperty dc:subject ;
>>                                 owl:someValuesFrom
>>                                      [ a owl:Restriction
>>   ;
>>                                        owl:onProperty rdfs:subClassOf;
>>                                        owl:hasValue Animal
>>                                      ]
>>                               ]
>>
>>
>> Is there anything I missed here? Thank you!
>>
>> Best,
>> Mark
>>
>>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: About the Approach 1, Representing Classes As Property Values on the Semantic Web

Natasha Noy
Dear Bene,

> The declaration of :BookAboutAnimals found in the [N3] file above is as follows:
>
> 13 default:BookAboutAnimals
> 14       a       owl:Class ;
> 15       rdfs:subClassOf owl:Thing ;
> 16       rdfs:subClassOf
> 17               [ a       owl:Class ;
> 18                 owl:unionOf ([ a       owl:Restriction ;
> 19                             owl:onProperty dc:subject ;
> 20                             owl:someValuesFrom default:Animal
> 21                           ] [ a       owl:Restriction ;
> 22                             owl:onProperty dc:subject ;
> 23                             owl:someValuesFrom
> 24                                     [ a       owl:Restriction ;
> 25                                       owl:hasValue default:Animal ;
> 26                                       owl:onProperty p1:subClassOf
> 27                                     ]
> 28                           ])
> 29               ] .
>
> If we compare the declaration above to that on the snippet listed online, two mismatches can be seen:
>
> 1) [N3] file, line 26: "p1:subClassOf" seems to be a typo for "rdfs:subClassOf".
> 2) [N3] file, line 20: "owl:someValuesFrom default:Animal" is "owl:hasValue Animal" on the snippet listed online.
>
> There is also a new owl:ObjectProperty declared, "p1:subClassOf" on line 47, I guess because of 1).
>
> In this sense, my questions would be:
>
> - Regarding 1). What was the actual intent?

It's a typo. The intended property is rdfs:subClass. Although, p1 is defined as another prefix for rdf schema. So, the end result is actually the same.

> If the intended property is in fact rdfs:subClassOf, would we want to apply an OWL restriction on a property that is part of the RDF-Schema definition? Wouldn't this turn rdfs:subClassOf into an owl:ObjectProperty as a side effect also, creating a somewhat odd meta-modeling scenario?

That's not really a problem. I don't think there is a definition anywhere that restricts the range of owl:onProperty to owl:ObjectProperty. Do you have a pointer?
 
> - Regarding 2). What was the intended restriction? owl:someValuesFrom as in line 20 above, or owl:hasValue as in the N3 fragment given online? If the intended one is owl:hasValue as in the fragment online, the expected value would be an individual, while "Animal" is a class. Is this re-use of the class "Animal" as value of the property owl:hasValue, also part of what Approach 1 is trying to illustrate?

Yes, exactly. You *can* have a class as the value for hasValue. It gets you into OWL Full, but you are already there in this approach.

>
> I believe these mismatches between the N3 fragment given online and the [N3] file provided, leave some room for ambiguity on what the intended implementation of Approach 1 is. Would it be possible to consolidate these two sources as originally intended?

I don't see a mismatch, other than the additional declaration of the namespace prefix -- which leads to the same result. The note explains that you need both restrictions in this case: the someValuesFrom and hasValue on rdfs:subclassOf.

Hope this helps.

Natasha
>