A reasoner using Webized ISO Prolog:
TERM | Examples |
---|---|
IRI | 'urn:example:abc' |
BLANKNODE | '_:bn_1' |
VARIABLE | X _abc |
LITERAL | "abc" true 1.52 1e-18 pi |
LIST | [TERM,...] [TERM,...|LIST] |
COMPOUND | IRI(TERM,...) |
TRIPLE | IRI(TERM,TERM) GRAPH => GRAPH |
GRAPH | TRIPLE,... |
CLAUSE | Examples |
---|---|
ASSERTION | TRIPLE. true => GRAPH. |
FORWARD_RULE | GRAPH, PROLOG (*) => GRAPH. |
QUERY | GRAPH => true. |
ANSWER | GRAPH => true. |
INFERENCE_FUSE | GRAPH => false. |
BACKWARD_RULE | TRIPLE <= GRAPH, PROLOG . |
(*) Use stable(n)
to fail if the deductive closure at level n
is not yet stable.
It performs forward chaining for a FORWARD_RULE
and backward chaining for a BACKWARD_RULE
.
Queries are posed and answered as GRAPH => true.
so the answers are also queries be it with
some parts substituted and eventually containing more variables than in the original query.
This forms a dialogue leading to necessary and sufficient answers, supported by proof steps, so that action can take place.
Proofs are made of:
proof((prem => conc),prem_inst,conc_inst).
Install Trealla Prolog and run
cd etc
./test
- Personal notes by Tim Berners-Lee: Design Issues
- Book of Markus Triska: The Power of Prolog