Introduction Differences source
Lite Syntax Lite Mapping Lite Triples
DL Syntax DL Mapping DL Triples


This paper presents a revised version of the syntax for OWL Lite and OWL DL.

The differences from the published Abstract Syntax are slight; the differences in the mapping rules are greater; the expression of OWL Lite and OWL DL as RDF graphs is completely different. The latter motivates most of the other differences.

There are also differences arising from:

The syntaxes used in this paper are processed using SWI-Prolog; specifically the triple tables are generated from the abstract syntax and mapping rules.

The source code is included. It can be run by the following sequence of commands:

[jjc@jjc jjc]$ cd ass
[jjc@jjc ass]$ pl -G8m
% /home/jjc/ass/.plrc compiled 0.00 sec, 268 bytes
Welcome to SWI-Prolog (Version 5.0.10)
Copyright (c) 1990-2002 University of Amsterdam.
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit for details.

For help, use ?- help(Topic). or ?- apropos(Word).

?- [load].
%  program/loader compiled 0.00 sec, 4,432 bytes
%  program/ops compiled 0.00 sec, 1,292 bytes
%  program/util compiled 0.00 sec, 2,656 bytes
%  program/syntax compiled 0.00 sec, 9,752 bytes
%  program/map compiled 0.01 sec, 35,260 bytes
%  program/html compiled 0.01 sec, 35,644 bytes
%  program/out compiled 0.00 sec, 9,272 bytes
%  grammar/lite compiled 0.00 sec, 12,536 bytes
%  grammar/dl compiled 0.00 sec, 3,560 bytes
%  grammar/mapping compiled 0.01 sec, 38,120 bytes
%  grammar/builtin compiled 0.00 sec, 4,432 bytes
%  grammar/uri compiled 0.00 sec, 2,048 bytes
% load compiled 0.03 sec, 160,000 bytes

?- time(compMapping).
% 3,670,705 inferences in 6.57 seconds (558707 Lips)

?- time(out).
Creating out/lite-syntax.html
Creating out/lite-mapping.html
Creating out/lite-triples.html
Creating out/dl-syntax.html
Creating out/dl-mapping.html
Creating out/dl-triples.html
% 44,446,523 inferences in 32.71 seconds (1358805 Lips)


It is also possible to modify the grammars and rerun to get different tables etc. However, the separation between the program and the grammars is not as clean as I would like, and some aspects of the grammar are builtin to the program. (e.g. the start symbol, some of the categories).

To Do List

The main item on the to-do list is correspondences proofs.

Ground Triples
The key to the proofs is a table which for each triple without blank nodes gives a corresponding abstract syntax directive that generates precisely that triple and explicit type triples.
Triples with unnamedIndividuals
A further table is needed showing how to add a single triple involving unnamedIndividuals. An inductive hypothesis allows the smaller graph to already have an abstract syntax form.
Class comparison triples
An explanation of how to add triples with predicate rdfs:subClassOf, owl:sameClassAs, or owl:disjointWith with either subject or object as a blank node needs to be added.
Triples with rdf:List
A further table is needed showing how to add three triples forming the first element in an rdf:List, in any of its possible locations. An inductive hypothesis allows the smaller graph to already have an abstract syntax form.
Triples with other blank nodes
A further table is needed showing how to add any of the other blank nodes first as a top-level directive and then as the object of some other triple.