DAML Logo - Link to www.DAML.org

RuleML Experiments with GEDCOM

Home | About DAML | Announcements | Roadmap | Site Search

This page discusses some work I did to gain familiarity with RuleML (version 0.7) and the use of the DAML+OIL language with several rule engines (XSB, JESS, and cwm) during and shortly after meeting with the RuleML folks at the RDF Interest Group Face-to-Face Meeting in Cambridge, MA in late February 2001.

This summary page was written in July 2001.


I had recently developed gedcom.daml, a DAML ontology for genealogy information. It employed the data model from the existing GEDCOM standard, which defines Individuals, Families, and Events. This provides a "normalized" representation where information is never duplicated, but may not be the most convenient representation for progammatic manipulation. I decided to use RuleML to define familiar family relationships (child, spouse, etc.). This grew over time to become 31 rules. The current version is available as gedcom-relations.xml.


To gain experience in using the rules under different rule engines, I wrote small XSLT scripts to translate the rules into the rule representation for each of the target engines, and (where necessary) a Java program to translate the RDF graph into a literal representation of the triples. I then wrote a small application to print my uncles. These are linked in the table below:

Rule Engine Rule Transformation Translated Rules DAML Instance Transformation Application Execution Script
XSB xsb.xsl gedcom_relations.P com.tks.daml.Crawler from Teknowledge Palo Alto xsb.P xsb.bat
JESS jess.xsl gedcom-relations.clp genfacts.java jess.clp jess.bat
n3/cwm n3.xsl gedcom-relations.n3 cwm reads DAML directly n3.bat

The XSB application ran quickly, but kept looping (someone more familiar with XSB and Prolog could probably debug this).

cwm deduces all possible facts from its inputs. Running on my personal family tree (1741 Individual and 668 Families), it started with 16296 DAML statements and generated 399103 more. I left it running overnight, so I'm not sure how long it actually took, but I was impressed that it did finish. Some additional details of my use of cwm are available here.


Here are my significant findings:
  1. RuleML generally worked well for expressing these rules. There were a couple requirements that weren't addressed by RuleML 0.7: These features are supported in each of the target rule engines. I manually changed the generate output specify the former.
  2. XSLT was the obvious choice for translating the rules, and it worked OK, but output formatting requirements (spaces, linefeeds, etc), which is not generally a concern for XSLT, made the XSLT stylesheets much less readable

Possible Future Directions


Mike Dean
$Id: index.xml,v 1.7 2002/04/11 14:14:10 kmbarber Exp $