version: $Revision: 1.22 $
date: $Date: 2005/03/13 13:10:01 $
author: Jos de Bruijn, Reto Krummenacher
this schema is a module, which belongs to the WSML/XML schema specification.
This schema provides WSML/XML syntax for logical expressions. This syntax for logical expressions is inspired by the RuleML FOL (First-Order Logic) variant.
Necessary additions for WSML-Full were the introduction of negation-as-failure, LP implication and constraints
Database-style constraint. Corresponds with the '!-' symbol in the human readable syntax.
Logic Programming rule. This rule has a head and a body. This XML element corresponds with the ':-' symbol in the human-readable syntax.
A WSML logical expression is either a constraint, an LP rule or a formula. The formula corresponds to an LP rule with an empty body.
Conjunction
Disjunction
Classical negation
Negation-as-failure
Right implication (corresponds with necessary conditions). The first formula nested inside the 'implies' element, implies the second formula. For an implication, exactly two formulas must be nested inside the implication element.
Left implication (corresponds with sufficient conditions). The first formula nested inside the 'implies' element, is implied by the second formula. For an implication, exactly two formulas must be nested inside the implication element.
Dual implication (corresponds with necessary and sufficient conditions). The first formula nested inside the 'implies' element, is implied by the second formula. For an implication, exactly two formulas must be nested inside the implication element.
Universal quantification.
Existential quantification
For now the complexExpressionType is repeated after the 'var' element, because I don't know how to include it *after* 'var'.
The basic type for WSML-Full expressions, allowing exactly one expression
The basic type for WSML-Full expressions, allowing exactly two expressions to each side of the operator
An atom denotes a relation with an n-ary domain, where n is the arity of the predicate
A term can be a IRI or a variable,
or a constructed term (corresponsing to a function symbol), where the arguments are terms themselves. In the latter case, the name may not be a variable.