YoungParentDiscount 1

From RIF
Jump to: navigation, search



Test TypePositiveEntailmentTest
ContributorAxel Polleres
StatusApproved
Record9 June 2009 telecon
DialectBLD
PurposeThis test case illustrates the use of guard predicates with built-ins, as well as RDF+BLD combinations.
DescriptionThe 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.
SeeAlsoYoungParentDiscount_2
SpecRefhttp://www.w3.org/2005/rules/wiki/DTB#Guard_Predicates_for_Datatypes
ImportedDocument
Location http://example.org/mygraph
Turtle@prefix ex: <http://example.org/example#> . @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 .
XMLview RDF/XML
Premises
Presentation SyntaxDocument( Prefix(ex <http://example.org/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 ) ) ) ) ) ) )
XMLview RIF/XML
Conclusion
Presentation SyntaxAnd ( ex:JohnDoe # ex:YoungParent ex:JoanDoe # ex:ParentToBeChecked )
XMLview RIF/XML