UPDATE: why RDF syntax is not suitable for OWL

Here are my current thoughts on why OWL should not use the same syntax as
RDF, no matter what we do with the semantics.

Peter F. Patel-Schneider
Bell Labs Research



		Why Triples are Terrible for Syntax


Summary:  RDF containers, RDF reification, and DAML+OIL syntax all show
	  that triples are terrible for syntax.


Triples, at least RDF triples, are terrible for representing syntax.
These triples have all the wrong properties for representing syntax.
1/ They only allow three pieces of information to be collected into an
   atomic entity.
2/ There is no grouping of triples possible.
3/ There is no way to close off access to a triple.
4/ All triples are independent.


An RDF triple consists of three pieces, generally thought of as the
subject, predicate, and object of the triple.  Triples are collected into
documents, with no internal structure besides the enclosed collection of
triples.

To create larger syntactic units, a group of triples has to be used.  


This is done in RDF containers, where a collection of triples is used to
create a sequence or bag.  In essence, one RDF resource is used to
represent the sequence or bag, and it is related to its elements by
triples, each of which has the collection resource as its subject, one of a
sequence of special resources as its predicate, and a collection member as
its object.

RDF containers have caused lots of problems.  Because the special predicate
resources identify the ``position'' of the element in the collection it is
possible to have collections that are missing their ``first'' element.
Because there is no way of preventing the addition of more of these
triples, it is impossible to state that all the elements of the collection
have been given.  

For example, one document can have

	x:foo rdf:type rdf:Bag .
	x:foo rdf:_2 y:John .
	x:foo rdf:_3 y:Susan.

which is missing its ``first element''. Another document can augment x:foo,
as in 

	x:foo rdf:_1 y:Mary .

to result in a completed bag.  Yet another document can augment x:foo
further, as in

	x:foo rdf:_4 y:Joseph .
	x:foo rdf:_3 y:Andrew .

There is no way of determining the elements of this bag, as they can always
be augmented.


RDF reification also uses a collection of triples, four in this case.
A reified statement is represented by a resource.  This resource has
four triples; one giving rdf:Statement as the rdf:type of the resource, and
three more identifying the subject, predicate, and object of the resource.

Again, RDF reification has caused lots of problems.  Because the four
triples are independent, it is possible to have a reification without a
subject, predicate, or object.  To prevent multiple subject, predicates, or
objects, there is a special condition on reified statements that they can
have only one subject, predicate, or object triple.  This breaks the
general RDF model, and is only possible for concepts that are
defined in RDF itself, not for additions to RDF.

For example, 

	x:s1 rdf:type rdf:Statement .

is illegal in RDF, as it does not have the required three properties.
Similarly

	x:s2 rdf:type rdf:Statement .
	x:s2 rdf:subject y:subject .
	x:s2 rdf:object y:object .
	x:s2 rdf:predicate y:predicate1 .
	x:s2 rdf:predicate y:predicate2 .

is illegal, but, again, only because there is special wording in the RDF
M&S that makes it so.


DAML+OIL uses its own lists in its syntax.  These lists are members of a
special class, List.  A list is either the empty list or has a first
element and a remainder.  

DAML+OIL lists have several problems.  It is possible to create a list
without a first element or a remainder.  It is possible to create lists
with several first elements or several remainders.

For example,

  x:foo daml:intersectionOf x:list .
  x:list daml:first x:Person .
  x:list daml:first x:Rock .
  x:lsit daml:rest daml:nil .

has a list with two first elements.


Some DAML+OIL syntax constructs work like RDF reification.  The construct
is represented by a resource that is a member of a special class.  There
are several triples, each of which have that resource as subject, that
together embody the construct.  

Again, this sort of construction has problems because of the properties of
triples.   First, some of the triples can be missing, so, for example, it
is possible to create a hasClass restriction without a property.  Second,
there can be multiple triples, so, for example, it is possible to create a
hasClass restriction with two properties or two classes.

For example, 

   x:foo rdf:type daml:Restriction .
   x:foo daml:onProperty x:age .
   x:foo daml:hasClass x:c1 .
   x:foo daml:onProperty x:shoesize .

is a possible restriction, which has an unusual meaning.


None of the above problems are really solvable using RDF triples.  A much
better syntax carrier would allow syntax to be represented as tuples or,
even better, as trees.

Received on Wednesday, 13 February 2002 18:57:34 UTC