[
Lists Home |
Date Index |
Thread Index
]
Hi
Still trying to understand the mysteries and mental models behind the
semantic web, I analyzed the OWL sample provided by W3C. It's a very good
tutorial for who wants to decipher OWL or to see a real application of it. I
don't know who did it but thanks for it
(ref: http://www.w3.org/TR/owl-guide/food.rdf )
(ref: http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine )
Analysis:
---------
OWL syntax seems to reflect the notion of a separation of properties and
classes. For instance, a class is declared with a <owl:Class> class elements
as in:
<owl:Class rdf:ID="ConsumableThing" />
And properties in <owl:ObjectProperty> elements as in:
<owl:ObjectProperty rdf:ID="madeFromFruit">
<rdfs:domain rdf:resource="#ConsumableThing" />
<rdfs:range rdf:resource="#Fruit" />
</owl:ObjectProperty>
The relationship between the two elements is established with the
<rdfs:domain> element and the constraints imposed on the property by the
<rdfs:range> element.
The class definition and the property definition could be located anywhere
in the document and no constraints on placement are imposed by the specs. By
simple examination of the class object it is not possible for somebody to
deduce what are the properties of this object. However, by a simple
examination of the property object it is possible to know what are the
classes associated to this property.
Comment about the syntax:
------------------------
It is, by analogy, equivalent to a previous pattern found in pre-70s
programs and known under the moniker "goto effect" or "spaghetti code". This
is probably, because, the format is not intended for reading nor it is
intended for manual writing. The question then is:
Why not having the properties declared inside a class element? Something
like:
<owl:Class rdf:ID="ConsumableThing">
<owl:ObjectProperty rdf:ID="madeFromFruit">
<rdfs:range rdf:resource="#Fruit" />
</owl:ObjectProperty>
.... other property definition ....
</owl:class>
The previous notation would have the benefits of:
a) helping people read an OWL specification.
b) From the cognitive point of view, to keep, as much as possible, the
information in the same locus. Hence preventing the "goto effect" or the
strange feeling of facing "spaghetti code"
c) help a parser to locate a class and get the pertinent information more
easily or faster than when the information is spread throughout the
document.
d) Would make it easier to write an XSLT style sheet to render for our
senses a class definition.
e) other reasons I do not think for the moment....
Probably there are good reasons other than a first level mapping to the
mathematical principles behind that (set theory, relation theory, lattice
theory, etc...). Object oriented languages often share the same mathematical
background but are also designed for readability and usability (and other
reasons off course). I know a quick answer would be to say that it is not
intended for human being. So why use a so bandwidth inefficient language as
XML? After all, a main advantage to XML is that it could be read by human
beings and therefore readability is an important factor doesn't it? Yes I
know, for some, human beings are peripherals to systems :-) and that
includes developers as well :-)
Question to Semantic web gurus:
---------------------------------
I guess I am missing something. Can the semantic web gurus provide an
intelligent answer to that?
Cheers
Didier PH Martin.
|