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

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
> 

Received on Tuesday, 22 May 2012 16:53:12 UTC