[SCL] CL Controlled English (CLCE)
John F. Sowa
sowa at bestweb.net
Sat Dec 20 10:04:59 CST 2003
Bill,
Re global replacement for "ontology": I would be
happy with either "theory" or "module".
Re grammar for CLCE: What I've written so far is
at the end of this note. I'll post a more complete
version on my web site after I get more comments
and flack.
Following is the general outline:
1. Monadic relations, such as red(x) or cat(x),
may be declared as either adjectives or nouns:
Declare red(x) as adjective.
Declare cat(x) as noun.
2. Relations with two or more arguments may be
declared as relational nouns, functional
nouns, verbs, or prepositions:
Declare child(x,y) as noun with focus x.
Declare mother(x,y) as functional noun
with focus x.
Declare give(x,y,z) as verb with
preposition "to" y.
Declare between(x,y,z) as preposition.
Restriction: The arguments of a relational
or functional noun are written as the object(s)
of the preposition "of". No verb may have a
preposition spelled "of".
3. Functions or relations that may have a
variable number of arguments are declared
with three dots in the last argument place:
Declare set(x,y,...) as functional noun
with focus x.
4. Any functional or relational noun can also
be used as a monadic relation that is true
of anything of the same type as its focus.
For example, mother(x) is true if and only if
there exists a y such that mother(x,y) is true.
5. The name of a function or relation does not
have to be the same as the word used in CLCE:
Declare "+"(x,y,z) as functional noun "sum"
with focus z.
6. There are no pronouns. Instead there are
variables, which consist of one of the three
letters "x", "y", or "z" followed by an optional
string of digits. Anyone who prefers "readable"
names can write "every cat x" to inroduce a
variable and "the cat x" to refer to it later.
7. A list of noun phrases must be enclosed in
parentheses to distinguish it from a conjunction
of sentences. Otherwise, all sentences in CLCE
are punctuated as they would normally be in English.
Examples of CLCE sentences with their translations to
predicate calculus notation:
1. Every cat is on a mat.
(A x:cat)(E y:mat)on(x,y).
2. Some person is between (a rock and a hard place).
(E x:person, y:rock, z:place)(hard(z) & between(x,y,z)).
3. If some person x is the mother of a child y,
then y is a child of x.
~((E x:person, y:child)(mother(x,y) & ~child(y,x))).
4. Every person x has a person y as mother.
(A x:person)(E y:person)mother(y,x).
5. If x is the set of (a cat, a dog, and an elephant),
then the cat is an element of x, the dog is an
element of x, and the elephant is an element of x.
~((E x0, x1:cat, x2:dog, x3:elephant)(set(x0,x1,x2,x3)
& ~(element(x0,x) & (element(x1,x) & element(x2,x)
& element(x3,x)))).
6. For every prime number x, there exists a prime number y
such that y is greater than x.
(A x:number)(prime(x) => (E y:number)(prime(y) & y>x)).
Following are the grammar rules I've written so far. I don't
expect the final version to be much longer than this, but
there may be more revisions and qualifications.
John
_____________________________________________________________
CompleteSentence ::= Sentence (";" Sentence)* "."
Sentence ::= NounPhrase VerbPhrase
| "if" Sentence ", then" Sentence
| Sentence ("," Sentence)* ","? "and" Sentence
| "either" Sentence "or" Sentence ("or" Sentence)*
| Sentence "if and only if" Sentence
| "for" UniversalNP "," Sentence
| "there" ("is" | "exists") ExistentialNP "such that"
| "it is false that" Sentence
NounPhrase ::= ExistentialNP
| UniversalNP
| FunctionalNP
| ReferentialNP
ExistentialNP ::= ("a" | "an" | "some") Adjective* Noun
Variable? Postmodifier?
UniversalNP ::= ("every" | "no") Adjective* Noun
Variable? Postmodifier?
FunctionalNP ::= "the" FunctionalNoun Variable?
"of" (NounPhrase | List)
ReferentialNP ::= ("the" Noun)? (Variable | Name)
| "the Noun"
Note: The scope of a name includes an entire module.
The scope of a variable in a "for" or "there is"
prefix extends to the period at the end of a complete
sentence. The scope of other variables is no farther
than the nearest ";" or ".", but the next version of
the grammar will be more explicit.
A referential NP may only occur within the scope of
the variable or name. The variable or name may be
omitted if there is only one noun with the same
spelling within the scope.
List ::= "(" NounPhrase ("," NounPhrase) ","?
"and" NounPhrase ")"
Postmodifer ::= "of" (NounPhrase | List)
| "that" VerbPhrase
| Comparative "than" NounPhrase
VerbPhrase ::= "does not"? Verb (NounPhrase | List)?
PrepositionalPhrase*
| "is" "not"? (Adjective | NounPhrase |
PrepositionalPhrase |
Comparative "than" NounPhrase)
| ("has" | "does not have") NounPhrase
"as" (RelationalNoun | FunctionalNoun)
PrepositionalPhrase ::= Preposition (NounPhrase | List)
Variable ::= ("x" | "y" | "z") Digit*
More information about the SCL
mailing list