RuleML Official Normalizer (RON)

  • Dr. Harold Boley
  • Dr. Tara Athan
Team of 5 Members:
  • Nada Alsalmi
  • Leah Bidlake
  • Ao Chang
  • Thea Gegenberg
  • Emily Wilson
Project Files: Test Cases: The following test cases demonstrate the normalizers capabilities for all phases. The result of the test cases is the same:


RuleML is a markup language for sharing rules in XML. It is serialized as an XML tree whose elements alternate between representing classes or type tags (nodes), and representing methods or role tags (edges). Such a document with all edges removed is an (extreme) example of stripe-skipping. In the normalization of a RuleML document we transform stripe-skipped serializations back into ones that are fully striped. We also assure that subelements are in proper canonical order and that all attributes have explicit values. Finally, we perform pretty-print formatting.

Phase 1

For phase 1 we check the syntax for missing stripes and add the missing role tags. We use XSLT to check for the missing edge stripes and add them in where necessary. We used various test cases to check that the normalizer added the necessary role tags. Test cases used included relaxed, partially normalized and fully normalized.

Phase 2

For phase 2 reordered the elements so that their subelements are in canonical order (e.g., slotted arguments after positional arguments). We made sure that the order of the elements in the outputted RuleML document follows the same order outlined in the normalizer schema. We also built canonically ordered content of each element.

Phase 3

For phase 3 we made all attributes that have default values explicit. We developed general rules that can find an element and apply templates to it regardless of where it appears in the source document. To make this process easier, we made the attributes with default values explicit in a (Deliberation, non-SWSL) RuleML instance.

Phase 4

For phase 4 we ensured that the RuleML output is nicely formatted. This allows the output to be easily read. For example, some tags are not to be put on a new line. Also, tabs are used properly to show the hierarchy of tags.

Test Cases

To duplicate the results from the test cases use the Online XSLT 2.0 Service and copy the links for the normalizer and the test case as the inputs.