W3C home > Mailing lists > Public > public-lod@w3.org > June 2010

Re: Share, Like Ontology

From: Antoine Zimmermann <antoine.zimmermann@deri.org>
Date: Sat, 12 Jun 2010 19:43:42 +0100
Message-ID: <4C13D55E.8080807@deri.org>
To: Kurt J <kurtjx@gmail.com>
CC: Linked Data community <public-lod@w3.org>, Semantic Web <semantic-web@w3.org>, pedantic-web@googlegroups.com
Deer Kurt,

[I Cc the Pedantic Web mailing list whose member could be interested in 
those issues]

I have some comments on your ontology:
  1) related to OWL DL
  2) related to the use of owl:Class VS rdfs:Class, owl:*Property VS 
  3) related to musim:element, musim:subject and music:object
  4) related to musim:distance and musim:weight

Are you aware that your ontology is not in OWL DL and is it intentional?
Please notice that minor changes would make it a DL ontology.  I can 
give you the details if you are interested.

2) owl:Class VS rdfs:Class; owl:*Property VS rdf:Property
All your classes and properties are declared using the OWL vocabulary.
It would be good to have, *in addition* to this, a declared type 
rdfs:Class and rdf:Property like this:

:Similarity a owl:Class, rdfs:Class;
     rdfs:label "...";
     rdfs:subClassOf ... etc.

The reason is that a pure RDFS tool is not aware of the meaning of the 
OWL vocabulary.  Therefore, such a tool is not able to infer that an 
owl:Class is also an rdfs:Class.  Similarly, it is not able to identify 
an owl:ObjectProperty or owl:DatatypeProperty or owl:AnnotationProperty 
as an rdf:Property.
As an example, a SPARQL query like:

SELECT ?prop WHERE { ?prop a rdf:Property }

would give *no* result when applied to your ontology. You should keep 
*both* types (owl:Class and rdfs:Class) because declaring all classes 
and properties with a OWL vocabulary is obligatory in OWL DL.  Adding 
rdfs:Class to the types is not a problem for OWL DL so you can safely 
use it.

3) musim:element, musim:subject and musim:object
musim:element is defined as a FunctionalProperty which means that a 
given thing can only have at most one element.  Moreover, music:subject 
and music:object are subproperties of music:element, so a subject is an 
element and an object is also an element of a thing.  Now that means 
that it is not possible to have a subject and an object which are different.
The following knowledge base is inconsistent wrt you ontology:

my:assoc :subject my:sub ;
          :object  my:obj .
my:sub owl:differentFrom my:obj .

This contradicts the description of the properties subject and object.
I imagine that you want to say that an association has one subject and 
one object.  Why not use a class restriction like:

:Association a owl:Class, rdfs:Class ;
     rdfs:subClassOf [
         a owl:Restriction ;
         owl:onProperty :subject ;
         owl:someValuesFrom owl:Thing ]
     rdfs:subClassOf [
         a owl:Restriction ;
         owl:onProperty :object ;
         owl:someValuesFrom owl:Thing ]
If your data are likely to be processed by an OWL 2 RL reasoner, this 
would not be a good solution since it is forbidden in the RL profile of 
OWL 2 (but is allowed in EL, QL, DL and Full).

Moreover, :element, :subject and :object are AsymetricProperties.  While 
this obviously makes sense at the conceptual level, I don't think it 
"fits" with your ontology.  Your ontology is very lightweight and little 
constrained (which is good) except for these properties.  I don't think 
it adds much to explicitly put such a constraint.

4) musim:distance and musim:weight
I notice that you are defining two datatype properties with multiple 
range restriction:

:distance a owl:DatatypeProperty;
     rdfs:range xsd:float;
     rdfs:range xsd:int;
     rdfs:range xsd:double .


:weight a owl:DatatypeProperty;
     rdfs:range xsd:float;
     rdfs:range xsd:int;
     rdfs:range xsd:double .

I'm quite sure that it is not what you intend to mean and I imagine that 
you would like to say that the weight or the distance can be either a 
float, a double or an int.  Here you actually specify that the distance 
and the weight of something is necessarily a float, a int and a double 
at the same time.

Furthermore, the OWL spec [1] says that:

"""As specified in XML Schema [XML Schema Datatypes], the value spaces 
of xsd:double, xsd:float, and xsd:decimal are pairwise disjoint."""

This implies that :distance and :weight are in fact empty relations 
since it is impossible to have a value which is both a float and a 
double.  Using :distance or :weight in the predicate position of any 
triple would make the knowledge base inconsistent.

If you want to say that a distance or weight has to be in *one of* the 
three datatypes, you should rather say:

:weight a owl:DatatypeProperty, rdf:Property;
     rdfs:range [ owl:unionOf ( xsd:float xsd:int xsd:double ) ] .

However, I feel unsatisfied by this because it is slightly 
overconstraining.  Why not allow xsd:decimal or even owl:real as well? 
Or untyped literals such as:

ex:a :distance "1879.42" .

I imagine that the value for such a distance will be computed 
automatically and the programme which does it will ensure that it is 
indeed a number.

[1] OWL 2 Web Ontology Language: Structural Specification and 
Functional-Style Syntax, W3C Recommendation 27 October 2009. Section 
"4.2 Floating-Point Numbers", 

Le 11/06/2010 19:20, Kurt J a écrit :
> I've developed an ontology for describing similarity between things.
> Not directly applicable to "like" and "share" but possibly of
> interest.
> http://purl.org/ontology/similarity/
> Note the most significant design decision is to make a similarity a
> class rather than a property.  This same approach might make sense for
> "like" and "share" allowing you to bind properties to these things.  I
> argue this enables more intuitive queries such as "show me all the
> 'likes' from this person from this info service".
> -kurt j
> On Fri, Jun 11, 2010 at 12:54 PM, Stéphane Corlosquet
> <scorlosquet@gmail.com>  wrote:
>> Nathan,
>> Have you looked at http://ontologi.es/like# ?
>> Steph.
>> On Fri, Jun 11, 2010 at 11:29 AM, Nathan<nathan@webr3.org>  wrote:
>>> Hi All,
>>> Before I give it a quick go, has anybody created an ontology for likes,
>>> resharing things etc ?
>>> Best,
>>> Nathan

Antoine Zimmermann
Post-doctoral researcher at:
Digital Enterprise Research Institute
National University of Ireland, Galway
IDA Business Park
Lower Dangan
Galway, Ireland
Received on Saturday, 12 June 2010 19:21:35 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:16:06 UTC