<?xml version="1.0" encoding="UTF-8"?>
<Rulebase Assert xmlns="http://www.ruleml.org/0.87/88/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ruleml.org/0.87/88/xsd http://www.ruleml.org/0.8788/xsd/datalog.xsd">
<!-- start XML comment ...
<And innerclose="universal">
<!-- start XML comment ...
This example rulebase contains four rules.
The first and second rules are implications; the third and fourth ones are facts.
In English:
The first rule implies that a person owns an object
if that person buys the object from a merchant and the person keeps the object.
As an OrdLab Tree:
imp~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* *
head * body *
* *
atom~~~~~~~~~~~~~~~~~~ and~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* | | | |
opr * | | | |
* | | | |
rel var var atom~~~~~~~~~~~~~~~~~~~~~~~~~~~ atom~~~~~~~~~~~~~~~~~~
. . . * | | | * | |
. . . opr * | | | opr * | |
. . . * | | | * | |
own person object rel var var var rel var var
. . . . . . .
. . . . . . .
. . . . . . .
buy person merchant object keep person object
... end XML comment -->
<Imp>
<Implies>
<head>
<Atom>
<opr><Rel>own</Rel></opr>
<Var>person</Var>
<Var>object</Var>
</Atom>
</head>
<body>
<!-- explicit 'and' -->
<And>
<Atom>
<opr><Rel>buy</Rel></opr>
<Var>person</Var>
<Var>merchant</Var>
<Var>object</Var>
</Atom>
<Atom>
<opr><Rel>keep</Rel></opr>
<Var>person</Var>
<Var>object</Var>
</Atom>
</And>
</body>
</Implies>
<!-- The second rule implies that a person buys an object from a merchant
<!-- The second rule implies that a person buys an object from a merchant
if the merchant sells the object to the person. -->
<Imp>
<Implies>
<head>
<Atom>
<opr><Rel>buy</Rel></opr>
<Var>person</Var>
<Var>merchant</Var>
<Var>object</Var>
</Atom>
</head>
<body>
<Atom>
<opr><Rel>sell</Rel></opr>
<Var>merchant</Var>
<Var>person</Var>
<Var>object</Var>
</Atom>
</body>
</Implies>
<!-- The third rule is a fact that asserts that
<!-- The third rule is a fact that asserts that
John sells XMLBible to Mary. -->
<Fact>
<head>
<Atom>
<opr><Rel>sell</Rel></opr>
<Ind>John</Ind>
<Ind>Mary</Ind>
<Ind>XMLBible</Ind>
</Atom>
</head>
</Fact>
<!-- The fourth rule is a fact that asserts that
Mary keeps XMLBible.
Observe that this fact is binary - i.e., there are two arguments
for the relation. RDF viewed as a logical knowledge representation
is, likewise, binary, although its arguments have type restrictions,
e.g., the first must be a resource (basically, a URI). Some of the
DTD's on the RuleML website handle URL's/URI's (UR's); see especially
urc-datalog.dtd for inferencing with RDF-like facts -->
<Fact>
<head>
<Atom>
<opr><Rel>keep</Rel></opr>
<Ind>Mary</Ind>
<Ind>XMLBible</Ind>
</Atom>
</head>
</And>
</FacAssert>
</Rulebase>