I was keen to try your OWL parser and tested it on a large ontology that TopQuadrant built of the US Federal Enterprise Architecture (FEA), called FEARMO. Initially there were a number of errors like:
ERROR: Unknown message: rdf(unparsed(['Workforce Management includes those activities that promote the welfare of the Nation', entity(8217), 's workforce by improving their working conditions, advancing opportunities for profitable employment, and strengthening free collective bargaining.']))
On discussing this with Dean Allemang he suggested fixing the first line of the file to include encoding info (<?xml version="1.0" encoding="ISO-8859-1"?>), the file successfully parsed as follows:

3 ?- owl_parse('c:\\models\\eGOV\\FEA\\FEARMO.owl',complete,complete).
% RDF: Shared 9 blank nodes
% Parsed "c:\models\eGOV\FEA\FEARMO.owl" in 0.42 sec; 6,138 triples

4 ?- owl_parser_log(X,Y), print(X), print(':'), print(Y), nl, fail.
"Wed Mar 23 22:04:36 2005":['Removing existing owl triples']
"Wed Mar 23 22:04:36 2005":'Copying RDF triples to OWL triples'
"Wed Mar 23 22:04:36 2005":['Number of owl triples copied: ', 5398]
"Wed Mar 23 22:04:36 2005":['Getting named classes...', 489, ' triples used']
"Wed Mar 23 22:04:36 2005":['Getting subclasses...', 388, ' triples used']
"Wed Mar 23 22:04:40 2005":['Getting disjoint sets of classes...', 556, ' triples used']
"Wed Mar 23 22:04:40 2005":['Getting equivalent sets of classes...', 704, ' triples used']
"Wed Mar 23 22:04:41 2005":['Getting properties...', 696, ' triples unused']
"Wed Mar 23 22:04:41 2005":['Getting Annotation properties...', 0, ' triples used']
"Wed Mar 23 22:04:41 2005":['Getting Individual axioms...', 0, 'triples used']
"Wed Mar 23 22:04:41 2005":['Getting Ontology...', 3, ' triples used ']
"Wed Mar 23 22:04:43 2005":['Getting named Individuals...', 2554, ' triples used']
"Wed Mar 23 22:04:43 2005":['Getting unamed classes...', 0, ' triples used']
"Wed Mar 23 22:04:43 2005":['Getting unnamed Individuals...', 1, 'triples used']
"Wed Mar 23 22:04:43 2005":['Nubber of unused remain triples ', 7]

5 ?-

Thought you might like to know of this test. This is a very pleasing result and I am glad to have been notified of your  library.

Ralph Hodgson
Executive Partner
TopQuadrant, Inc.,
Office: (724) 846-9300 ext. 211,
Direct: (703) 960-1028, Fax: (425) 955-5469, Cell: (781) 789-1664

Vangelis Vassiliadis wrote:

Thea: A Web Ontology Language - OWL Parser for [SWI] Prolog.

Vangelis Vassiliadis


Thea is a Prolog implementation of an OWL parser. Thea uses SWI-Prolog’s Semantic Web library for parsing RDF/XML serialisations of OWL documents into RDF triples and then it builds a representation of the OWL ontology as it is defined in the OWL Web Ontology Language Semantics and Abstract Syntax part of the OWL specification. The OWL ontology abstract syntax is implemented as Prolog terms. 

Thea is a project of and is available under the GNU/GPL license.
Current version of Thea OWL parser (v 0.3) released March 22, 2005.

Thea has been tested extensively against the OWL test cases and for almost all cases it generates the correct syntactic constructs.
Known issues and limitations:

-         Thea v.0.3 is not a reasoner: it does not make any inferences nor it checks the consistency of the resulted OWL ontology.
-         Thea parses all ‘versions’ of OWL ontologies (Full/DL/Lite) but does it is not currently a ‘species’ validator.
-         No support for the owl:import directive: any ‘imported’ ontology is not parsed automatically.
-         There is limited datatype support (SWI Prolog RDF parser’s current implementation has no provisions for XML-Schema typed literals).
-         The owl:equivalentProperty axiom is not supported.
-         The value of an individual is not tested for structure sharing.


Thea OWL Parser for SWI Prolog library

Please send me any comments and suggestions.