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

Overview:

  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


Steps:

  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.4 MYNG GUI

4.5 XSDs

4.6 Unit Tests

4.7 XSLTs

5 References