Tags

Bad content again

I have been reading the book "A Developer's Guide to the Semantic Web" from Liyang Yu.


A developer's Guide
I was mildly positive until I did get to the chapter on OWL. According to me it contains a lot of content which is simply wrong.
Some examples.

owl:someValuesFrom


This is how the class ExpensiveDSLR has been defined.

<owl:Class rdf:about="http://www.liyangyu.com/camera#ExpensiveDSLR_1">
<rdfs:subClassOf rdf:resource="http://www.liyangyu.com/camera#DSLR"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.liyangyu.com/camera#owned_by"/>
<owl:someValuesFrom rdf:resource="http://www.liyangyu.com/camera#Professional"/>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>

Then we have an instance defined (p. 168) as follows.

<myCamera:ExpensiveDSLR_1 rdf:about="http://dbpedia.org/resource/Canon_EOS-1D_1">
<myCamera:owned_by rdf:resource="http://www.liyangyu.com/people#Tom"/>
</myCamera:ExpensiveDSLR_1>

The author claims then that following fact will be inferred.

<http://www.liyangyu.com/people#Tom> rdf:type <http://www.liyangyu.com/camera#Professional>

I checked this with Pellet and other reasoners but no one infers this.

The author forgets that we are working with an Open World Assumption. At any time someone else can come along with new information. So at this stage one is not certain that the only owner known is a Professional; hence no inference.

owl:someValuesFrom is used to infer subject from objects, not the other way around as the author claims.

owl:hasValue

ExpensiveDSLR defined using owl:hasValue:

<owl:Class rdf:about="http://www.liyangyu.com/camera#ExpensiveDSLR_2">
<rdfs:subClassOf rdf:resource="http://www.liyangyu.com/camera#DSLR"/>
<rdfs:subClassOf>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.liyangyu.com/camera#cost"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>expensive</owl:hasValue>
</owl:Restriction>
</rdfs:subClassOf>
</owl:Class>
The related instance:

<myCamera:DSLR rdf:about="http://dbpedia.org/resource/Canon_EOS-1D_2">
<myCamera:owned_by rdf:resource="http://www.liyangyu.com/people#Tom"/>
<myCamera:cost rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>expensive</myCamera:cost>
</myCamera:DSLR>

The claimed inference:

<http://dbpedia.org/resource/Canon_EOS-1D_2> rdf:type  <http://www.liyangyu.com/camera#ExpensiveDSLR_2>

Again checking this with Pellet et all: no inference at all.

This is because the condition in the model is as follows:

If then
instance of http://www.liyangyu.com/camera#ExpensiveDSLR_2 property cost has value "expensive".


Not the way around.

If you change the model to

<owl:Class rdf:about="http://www.liyangyu.com/camera#ExpensiveDSLR_3">
<rdfs:subClassOf rdf:resource="http://www.liyangyu.com/camera#DSLR"/>
<owl:equivalentClass>
<owl:Restriction>
<owl:onProperty rdf:resource="http://www.liyangyu.com/camera#cost"/>
<owl:hasValue rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
>expensive</owl:hasValue>
</owl:Restriction>
</owl:equivalentClass>
</owl:Class>

then you get
If then
instance of http://www.liyangyu.com/camera#ExpensiveDSLR_3 property cost has value "expensive".
AND
property cost has value "expensive" instance of http://www.liyangyu.com/camera#ExpensiveDSLR_3

Conclusion

I lost my confidence in the book completely, the first time this happens with a book coming from Springer.
I suggest money is better spent on the second edition of the "Semantic Web for the Working Ontologist" of Dean Allemang and Jim Hendler, being much, much better edited than the first edition (Missed Opportunity).

Working ontologist

And based on the slides I have seen from the 2011 Semantic Technology Conference Tutorial, "Seven Things You Didn't Know About OWL" given by Dave McComb and Simon Robe, I would like to see a "how to ontology" book from them soon.





Comments