Holog Should Allow per Attribute in Any Term Within op Child of Expr

From RuleML Wiki
Jump to: navigation, search

--Athant (talk) 16:05, 1 August 2017 (ADT)

1 Issue Description

There is a RuleML 1.03 instance in exa/ called serialise_fail.ruleml (see also https://github.com/RuleML/deliberation-ruleml/blob/1.03/exa/Holog/nafhologeq/ or http://deliberation.ruleml.org/1.03/exa/Holog/nafhologeq/).

One thing that does not validate there is the @per attributes on Const, as that is not included in the holog module. For this to validate, @per needs to be allowed for any term element that appears in the <op> position of an <Expr>

2 Options

2.1 Option 0

Status quo - no change.

2.2 Option 1


  1. Create a new pattern e.g. AnyTermExprOperator.choice
  2. Define this so that it mirrors AnyTerm.choice, but also allows @per

Details: The AnyTerm.choice pattern is defined in terms of these:

  1. SimpleConstantTerm.choice
    1. Skolem
    2. Reify
    3. SimpleKeyTerm.choice
      1. individual (Ind)
      2. Data
      3. Const
  2. SimpleQuantifiableTerm.choice
    1. Var
  3. CompoundTerm.choice
    1. Expr
    2. Plex
    3. Uniterm


  1. Make new definitions of each, e.g. SkolemExprOperator
  2. Use these to define AnyTermExprOperator
  3. Use AnyTermExprOperator for the content of <op> in Expr
  4. Put these new patterns into something like "holog_per_expansion_module"
  5. Include "holog_per_expansion_module" into holog drivers.
  6. Also, op_Expr.content is redefined when expr_...module is included into the holog drivers, so that the new pattern AnyTermExprOperator is used.

2.3 Option 2

Allow @per attribute on all elements that belong to the pattern AnyTerm.choice (see Option 1).

2.4 Option 3

Allow @per attribute on Const, which is needed only in higher-order languages (similar to, but less lenient than, Option 2).

3 Discussion

Option 2 is quite lenient, as it allows @per attribute on many elements where it is not needed. Option 3 is a partial solution only, which could later be expanded to Option 2 or modified to Option 1.

3.1 Recommended Option

3.2 Accepted Option

Option 3 (for Version 1.03).

3.3 Related Issues

4 Resolution

4.1 Relax NG Modules

4.2 Relax NG Drivers

4.3 MYNG Engine


4.5 XSDs

4.6 Unit Tests

4.7 XSLTs

5 References