Another message trying to convey some of the motivations behind
the new syntax work.
This time I will concentrate on what is so wrong with the
AS&S mapping rules. The treatment is theoretical, in terms
of co-occurency patterns of syntactic categories.
First:
The principal reason we are not at last call is because AS&S
did not satisfy either Herman or myself, acting as WG reviewers.
On section 4.2, Herman [1] said:
[[
Main points (see URL):
- reorder/rewrite material so that it becomes intelligible
- include OWL Lite
]]
I said [2]:
[[
a rewrite of this section 4.2 would be in order
]]
Having proposed a rewrite I felt some obligation to show how a rewrite could
improve things, which is what motivates the revised syntax.
Now onto a theoretical analysis of why my mapping rules are infinitely better
than the published ones. (also justify use of the word infinitely).
Syntax is about describing co-occurence patterns between categories of
symbols.
Some patterns are complicated, requiring things like rewrite grammars; other
patterns are simpler (requiring lists of patterns).
In general a syntax with fewer categories and fewer patterns is clearer and
better than one with more categories and patterns.
One typically hope that the syntactic categories have some natural
correspondence to something in the domain of discourse, since this makes a
syntax easier to learn.
To describe OWL Lite/DL syntax in terms of triples we start by thinking up
categories for the nodes and/or properties in the graph. Many of these arise
directly from the abstract syntax and semantic distinctions, such as those
between properties and classes. A further syntactic restriction that is
implicit in AS&S but only made explicit in my treatment is that between the
object-properties that may be transitive or have transitive sub-properties
and those object-properties that may be in cardinality constraints.
It will be seen that all the URIref categories I propose are natural in the
sense of corresponding to abstract syntax concerns.
Moreover all the blank node categories either correspond directly to some
complex abstract syntax construct like description or restriction or are list
categories - the number of such list categories is not excessive.
In the published mapping rules all such categories are included (except for
ones where Peter is behind the WG decisions, and annotation properties
treated as one implicit category as opposed to my two explicit categories).
However there are an infinite number of other categories that show their own
distinct syntax in the triple form. These arise from a handful of problematic
mapping rules.
DisjointClasses(description1 … descriptionn)
=>
T(descriptioni) owl:disjointWith T(descriptionj) .
For n=2, 3, 4 ... when used with descriptions which map to blank nodes this
rule constructs a complex structure of n blank nodes with each participating
in precisely n-1 owl:disjointWith triples (the node corresponding to the ith
description is object in i-1 of these and subject in n-i of these).
Thus for each n>=2 this rule introduces at least n distinct syntactic
categories that can be distinguished on the basis of the triples produced.
(It gets worse when we rember that some descriptions can be named classes).
EquivalentClasses(description1 … descriptionn)
=>
T(descriptioni) owl:sameClassAs T(descriptionj) .
ditto.
restriction(ID component1 … componentn)
=>
_:x owl:intersectionOf
T(SEQ(restriction(ID component1)…
restriction(ID componentn))) .
This rule is specifically problematic in OWL Lite.
In OWL DL it is sufficiently close to a description that it could be patched
up.
In OWL Lite, except for this rule, owl:intersectionOf appears only to define a
named class as a list of restrictions or named classes. This rule allows a
restricition itself to be represented as an untyped blank node as long as
that blank node is subject of exactly one triple whose object is a list of
restrictions - these restrictions in that list can either be from one
of the other productions, or can come about from a recursive application
of this rule to itself.
Thus syntactic categories needed to support explaining this mapping rule
include:
- restriction - a blank node of type restriction (and some other constraints)
- a category x that is a singleton list with a member of category x or a
resriction (subject to the side condition of non-circularity and finiteness)
- a list of restrictions and category x
- a blank node which is subject of one triple whose object is the above such
list or rdf:nil.
It is easier to fix the abstract syntax than try explaining it.
A key part of my revision was the deletion of the above mapping rules, and
then making the corresponding changes in the abstract syntax.
DifferentIndividuals(iID1 … iIDn)
=>
_:x rdf:type owl:AllDifferent .
_:x owl:distinctMembers T(SEQ iIDi … iIDj)
Since the DifferentIndividuals rule in the abstract syntax requires n>=1
this rule creates a syntactic category of lists of individualIDs of length at
least one. Better to change the abstract syntax to permit n=0, and not
introduce a new category in the concrete syntax.
In conclusion, we see that the published mapping rules introduce essentially
spurious syntactic categories i.e. nodes in a graph that have distinctive
patterns of behaviour. This problem is infinite in extent, and is best fixed
by the central changes I am proposing in the abstract syntax.
Jeremy
[1]
http://lists.w3.org/Archives/Public/www-webont-wg/2003Jan/0426.html
[2[
http://lists.w3.org/Archives/Public/www-webont-wg/2003Jan/0332.html