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 
rdf:Property
  3) related to musim:element, musim:subject and music:object
  4) related to musim:distance and musim:weight


=====
1) OWL DL
=====
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 .

and

: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", 
http://www.w3.org/TR/owl2-syntax/#Datatype_Maps

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
antoine.zimmermann@deri.org
http://vmgal34.deri.ie/~antzim/
Received on Saturday, 12 June 2010 19:21:35 UTC

This archive was generated by hypermail 2.3.1 : Sunday, 31 March 2013 14:24:27 UTC