DAML Logo - Link to www.DAML.org

Yet Another DAML-Rules Proposal

Home | About DAML | Announcements | Roadmap | Site Search

This is a proposal for DAML-Rules. It builds off significant previous work:

The basic approach is to encode rules and variables as DAML+OIL instances, avoiding the need to add additional RDF syntax, make non-asserted statements, etc. A rule consists of an if part and a then part, both of which are ordered DAML+OIL lists of Atom (to support implementations where order is important). Subclasses of Atom provide for the following

Variables are defined as DAML+OIL objects. Variable names will generally be scoped within the containing page; variable bindings are scoped only within a specific rule.


I used a RDF(S)-compatible subset of N3 for my definitions because it's easier to read than DAML+OIL.

New readers are advised to read the following pages in order:

  1. introduction above
  2. dumpont of rules.daml
  3. rules.n3
  4. gedcom-relations background
  5. gedcom-relations.n3 example
  6. hyperdaml of gedcom-relations.daml
  7. Notes below
The following files are available:
rules ontology rules.n3 rules.daml (dumpont) (hyperdaml)
application of rules ontology to gedcom gedcom-relations.n3 gedcom-relations.daml (hyperdaml)


  1. I used DAML+OIL constraints such as cardinality for clarity even though we've avoided doing so in the DAML+OIL spec itself to avoid circularities in the semantics. If DAML-Rules ends up as a layer on top of the current DAML+OIL, this should be fine. If it ends up in the same layer, we can remove these constraints if necessary.
  2. Match don't currently allow variables for :p. We could add a PMatch to support this.
  3. There's currently no way to express the (not (match ...)) used in match.clp.
  4. There's currently no form of ignored variable (like a standalone ? in JESS). The suggested work-around is to declare as many variables named ignoren as are needed.
  5. I currently use the .daml suffix in namespaces because www.daml.org and the current APIs don't consistently favor .daml over .n3 suffices. I'd prefer not to use the .daml suffix.
  6. HyperDAML is somewhat limited in viewing ontologies defined using N3 because cwm never emits rdf:ID.


Initial discussion should take place on the joint-committee@daml.org email list (archives).

I suggest that we prioritize discussion as follows:

  1. the general approach (classes and variables as instances, etc.)
  2. semantics
  3. details (naming, rdfs:domain values, addition/removal of Builtins, etc.)
  4. packaging/presentation


Mike Dean
$Id: index.xml,v 1.6 2001/08/03 19:53:04 mdean Exp $