Thread Links Date Links
Thread Prev Thread Next Thread Index Date Prev Date Next Date Index

Re: SUO: RE: W3C approves RDF and OWL as recommendations




Danny,

I think that we agree on more than 25% of the
technical issues, but perhaps we have different
ideas about how to proceed in reaching the kinds
of goals that we would like to achieve.

I'll comment on a couple of points:

JS> ... By any measure of success, SQL certainly hit
 > a "sweet spot", and the failure of OWL to match
 > that sweetness is a serious mistake.

DA> I'm not an expert, but I smell a rat here somewhere -
 > Date and Fabian [1] have covered ad nauseum the limitations
 > of (implementations) of the SQL language compared to the
 > capabilities of Codd's relational model.

I certainly don't want to defend SQL syntax, which I used
to call the world's worst notation for logic -- but that
was before OWL came along.  Ted Codd is partly to blame
because he was working right down the hall from the guys
who gave us SQL, but he didn't get his hands dirty in
the day-to-day work.  The QUEL language that Stonebreaker
designed for Ingres was far and away superior.  And when
Codd learned about Prolog, he said that he wished that
he had invented it.

The point I was making is that a language for stating
queries and constraints requires the expressive power
of FOL.  The Object Constraint Language of UML has
that power, so does Express, and so do many other
design and specification languages.

DA> I can however respond from a pragmatic point of view,
 > that the RDBMS table-oriented approach is a poor match
 > to the arbitrarily structured data found in the web
 > environment. The graph model provided by RDF is a
 > considerably better fit. (Incidentally, a simple query
 > language, RDQL, was recently submitted as a W3C note [2]).

You don't have to sell me on the virtues of graphs,
but that has nothing to do with the expressive power
of the query language.  Both IBM and Oracle let you
ask SQL queries about data represented in XML.  I'm
not going to defend SQL as an ideal match to XML,
but you don't have to kludge up the syntax just
because the data happens to have a graph structure.

In his response, Philippe Martin referred to an article
on his web site, which I recommend.  For the benefit of
people who don't like to click on URLs, I copied one
of his examples below.

Instead of (or at least in addition to) OWL, I would
strongly recommend that the W3C adopt a version of
controlled natural language for representing constraints,
rules, and queries.

As an example, see my representation of one of
Lewis Carroll's logical puzzles in CLCE:

    http://www.jfsowa.com/clce/grocer.htm
    Lewis Carroll's Grocer Puzzle

I realize that some mapping is required from the
English syntax to whatever internal representation
is used.  In Section 2 of the CLCE specifications,
I show how each English word could be related to some
SQL relation.  A similar approach can be used to map
English words to some RDF relation type.  But the
mapping only needs to be specifed *once* for each
word type.  All the queries and constraints can be
stated in an English-like (or other NL-like) syntax.

Following is the CLCE report (which I moved to a
new directory):

    http://www.jfsowa.com/clce/specs.htm
    Common Logic Controlled English

And CLCE is just one example among many.  For an
overview of controlled languages, see

    http://www.ics.mq.edu.au/~rolfs/controlled-natural-languages/
    Controlled Natural Languages - Homepage

I realize that one could define a controlled NL that
maps to OWL, but why bother?  A controlled NL can be
formally defined.  The grammar might be beyond the
capabilities of XSLT, but a CLCE parser could be
downloaded during the time it takes to parse a page
of OWL.

John
_________________________________________________________

Source:

http://meganesia.int.gu.edu.au/~phmartin/WebKB/doc/model/comparisons.html
Translations between UML, OWL, KIF, FT, FCG and FE

E: Any human body has at most 2 arms. Any arm belongs to at most 1 body.

FT: pm#human_body p wn#arm [0..1,0..2];

KIF: (forall ((?b pm#human_body))
         (atMostN 2 '?a wn#arm (pm#part ?b '?a))) (forall ((?a wn#arm))
         (atMostN 1 '?b pm#human_body (pm#part '?b ?a)))

XOWLD:

<rdf:Property rdf:ID="ArmPart">
   <rdfs:subPropertyOf rdf:resource="&pm;part"/>
   <owl:inverseOf rdf:ID="ArmPartOf"/>
   <rdfs:range rdf:resource="&wn;Arm"/> </rdf:Property>
<owl:Class rdf:about="&pm;HumanBody"><rdfs:subClassOf>
   <owl:Restriction><owl:onProperty rdf:resource="#ArmPart"/>
   <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">2
   </owl:maxCardinality></owl:Restriction> </rdfs:subClassOf></owl:Class>
<owl:Class rdf:about="&wn;Arm"><rdfs:subClassOf>
   <owl:Restriction><owl:onProperty rdf:resource="#ArmPartOf"/>
     <owl:maxCardinality rdf:datatype="&xsd;nonNegativeInteger">1
     </owl:maxCardinality></owl:Restriction> 
</rdfs:subClassOf></owl:Class>

Here is our KIF definition of atMostN:

(defrelation atMostN (?num ?var ?type ?predicate) :=
   (exists ((?s set)(?n)) (and (size ?s ?n) (=< ?n ?num)
     (truth ^(forall (,?var) (=> (member ,?var ,?s)
                                 (and (,?type ,?var) ,?predicate)))))))