YoungParentDiscount 2

From RIF

Jump to: navigation, search



Test TypePositiveEntailmentTest
ContributorAxel Polleres
StatusProposed
Record
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_1
SpecRefhttp://www.w3.org/2005/rules/wiki/DTB#Guard_Predicates_for_Datatypes
ImportedDocument
Format Turtle
Location http://example.org/mygraph
Textex:littleJoeDoe ex:parent ex:JoanDoe, ex:JohnDoe. ex:littleJoeDoe ex: age 10 ex:JoanDoe ex:age "young"^^xs:string.
Premises
Presentation SyntaxDocument( 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/2007/rif-import-profile#RDF>) Group ( Forall ?c ?p ?ca ?pa( ?p # ex:YoungParent :- And( ?c[ ex:parent -> ?p ex:age -> ?ca ] ?p[ ex:age -> ?pa ] External( pred:isInteger( ?pa ) ) External( pred:isInteger( ?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:isNotInteger ( ?pa ) ) External( pred:isNotInteger ( ?ca ) ) ) ) ) ) )
XMLview XML
Conclusion
Presentation Syntaxex:JoanDoe # ex:ParentToBeChecked
XMLview XML