From RIF
| Test Type | PositiveEntailmentTest |
|---|
| Contributor | Axel Polleres |
| Status | Approved |
| Record | 9 June 2009 telecon |
| Dialect | BLD |
| Purpose | This test case illustrates the use of guard predicates with built-ins, as well as RDF+BLD combinations. |
| Description | The first rule says that a child is eligible for a "young-parents" discount if the difference between the child's age and one of the parent's age is less than 25 years. The second rule says that if a parent's age is not numeric, the parent will be marked as needing to be checked for eligibility. Note that external built-ins can be nested arbitrarily. Note also that built-ins in RIF are defined for arguments of specific datatypes. When an argument is not of the appropriate datatype, it is an error. Since the model-theoretic semantics for RIF does not include the notion of an error, the values of built-in predicates and functions are unspecified in such cases. In order to enable writing of rule sets with controlled behavior, RIF defines guard predicates for each datatype. |
| SeeAlso | YoungParentDiscount_2 |
| SpecRef | http://www.w3.org/2005/rules/wiki/DTB#Guard_Predicates_for_Datatypes |
| ImportedDocument |
| Format | Turtle |
| Location | http://example.org/mygraph |
| Text | @prefix ex: <http://example.org/#> .
@prefix xs: <http://www.w3.org/2001/XMLSchema#> .
ex:littleJoeDoe ex:parent ex:JoanDoe, ex:JohnDoe.
ex:littleJoeDoe ex:age 10.
ex:JohnDoe ex:age 34.
ex:JoanDoe ex:age "29"^^xs:string. |
|
| Premises |
| Presentation Syntax | Document(
Prefix(ex <http://example.com/example#>)
Prefix(func <http://www.w3.org/2007/rif-builtin-function#>)
Prefix(pred <http://www.w3.org/2007/rif-builtin-predicate#>)
Import(<http://example.org/mygraph> <http://www.w3.org/ns/entailment/RDF>)
Group (
Forall ?c ?p ?ca ?pa(
?p # ex:YoungParent :-
And( ?c[ ex:parent -> ?p ex:age -> ?ca ]
?p[ ex:age -> ?pa ]
External( pred:is-literal-integer( ?pa ) )
External( pred:is-literal-integer( ?ca ) )
External( pred:numeric-less-than(External( func:numeric-subtract( ?pa ?ca ) ) 25 ) )
)
)
Forall ?c ?p ?ca ?pa(
?p # ex:ParentToBeChecked :-
And( ?c[ ex:parent -> ?p ex:age -> ?ca ]
?p[ ex:age -> ?pa ]
Or ( External( pred:is-literal-not-integer( ?pa ) )
External( pred:is-literal-not-integer( ?ca ) ) ) )
)
)
) |
| XML | view XML |
|
| Conclusion |
|