Rdb: Ruby-Nachbau der MWC /rdb-Werkzeuge
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
.TH tabletofact "" "" "/rdb Command"
|
||||
.PC "Converts a table to PROLOG fact-file format"
|
||||
\fBtabletofact \fItable ... \fB> \fIprologfactfile\fR
|
||||
.PP
|
||||
.II "table^convert to PROLOG facts"
|
||||
.II "convert table to PROLOG facts"
|
||||
.II "PROLOG^convert table to facts"
|
||||
The command
|
||||
.B tabletofact
|
||||
converts each
|
||||
.I table
|
||||
into a file of facts in predicate calculus functor form,
|
||||
which can be input to a PROLOG interpreter.
|
||||
.SH Facts
|
||||
PROLOG
|
||||
facts are in the form
|
||||
.IR relationship(subject,object) .
|
||||
For example, the fact
|
||||
.DM
|
||||
parent(sally,fred)
|
||||
.DE
|
||||
.PP
|
||||
means that ``sally is the parent of fred''.
|
||||
.PP
|
||||
PROLOG is a programming language whose name is a contraction of the phrase
|
||||
.IR "programming in logic" .
|
||||
Its input consists of
|
||||
.IR facts ,
|
||||
.IR rules ,
|
||||
and
|
||||
.IR questions .
|
||||
If you build a data base of facts and rules,
|
||||
you can ask questions and get answers.
|
||||
If a question you ask does not have a
|
||||
corresponding fact in the data base,
|
||||
PROLOG looks through its rule file to see if other facts might
|
||||
logically deduce the fact requested.
|
||||
.SH Example
|
||||
Suppose we have these simple table
|
||||
.B parent
|
||||
.DM
|
||||
Parent Child
|
||||
------- -------
|
||||
Sally Fred
|
||||
Mike Fred
|
||||
Fred Jane
|
||||
.DE
|
||||
.PP
|
||||
the simple table
|
||||
.B female
|
||||
.DM
|
||||
Name
|
||||
----
|
||||
Jane
|
||||
Sally
|
||||
.DE
|
||||
.PP
|
||||
and the simple table
|
||||
.BR male :
|
||||
.DM
|
||||
Name
|
||||
----
|
||||
Fred
|
||||
Mike
|
||||
.DE
|
||||
.PP
|
||||
The command
|
||||
.DM
|
||||
tabletofact parent female male > fact
|
||||
.DE
|
||||
.PP
|
||||
produces the following facts:
|
||||
.DM
|
||||
parent(Sally,Fred).
|
||||
parent(Mike,Fred).
|
||||
parent(Fred,Jane).
|
||||
female(Jane).
|
||||
female(Sally).
|
||||
male(Fred).
|
||||
male(Mike).
|
||||
.DE
|
||||
.PP
|
||||
As you can see,
|
||||
the relationship is set by the name of the table, and the subject and
|
||||
object (if any) are set by the data in each row.
|
||||
.PP
|
||||
PROLOG
|
||||
can now use its command
|
||||
.B consult
|
||||
to read this file.
|
||||
If PROLOG
|
||||
had rules about father, mother, grandparent, and so on,
|
||||
then it could answer questions like:
|
||||
.B mother(sally,fred)?
|
||||
That fact is not in the data base, but can be deduced from rules like:
|
||||
.DM
|
||||
mother(X,Y) if parent(X,Y) and female(X)
|
||||
.DE
|
||||
.PP
|
||||
.SH "See Also"
|
||||
.B
|
||||
tabletorule
|
||||
.R
|
||||
.SH Notes
|
||||
.II COHware
|
||||
If you wish to experiment with PROLOG,
|
||||
volume 2 of
|
||||
.B COHware
|
||||
includes the source code for a PROLOG interpreter.
|
||||
Reference in New Issue
Block a user