Re: Defining Type Hierarchies
Philippe MARTIN <
pm@...>
2006-06-02 07:18:47 GMT
John,
> I am currently revising, updating, and extending the
> ontology specified in my KR book, and I found it useful
> to have a compact way of specifying the type hierarchy.
Indeed, and "essential" for presenting/visualising (and hence
updating) large ontologies (or large amounts of information
about one object). This is why I extended your compact form
for WebKB-2 in 2000 (and still occasionally extend it). This
is the FL (For-Links) sub-language of the FS (For-Structuring
language; an extension/combination of FCG, KIF and CGIF).
The grammar of FL is at
http://www.webkb.org/doc/F_languages.html#FL
> Dog < Animal. Animal > Dog.
For the same reasons, it is very important to be able
1) to precise many subtypes/sypertypes/link_destinations,
2) to use different kinds of links from one sources.
Hence, the core FL syntax illustrated by the following example:
domestic_dog
< canine,
> pooch mongrel lapdog toy_dog hunting_dog working_dog
dalmatian basenji pug-dog Leonberg Newfoundland
Great_Pyrenees spitz Brussels_griffon Welsh_corgi
poodle_dog Mexican_hairless,
: Lassie The_Tramp, //assuming that The_Tramp is a real dog
exclusion: cat wild_dog,
member of: genus_Canis *..1 dog_pack,
name: "dog" "domestic_dog",
definition: "a member of the genus Canis" "another def.",
part: 0..1 tail 0..4 leg 1 head;
In WebKB-2 the creator of each term and each link also has to be
explicited but I won't detail that here. The version of the above
example in WebKB-2 is slightly more compact and is accessible at
http://www.webkb.org/bin/categSearch.cgi?categ=dog&recursLink=%3C&hyperlinks=
> 2. Boolean expressions may be used with "&" for AND,
> "|" for OR, "~" for NOT, and "=" for equivalence:
> Human = Rational & Animal.
> Entity = Physical | Abstract.
There is an approach which is more in-line with the above one
(hence, more compact and handier for visualisations/updates);
if you want to state that a complete subtype partition of Entity,
I suggest the FL syntax:
entity > {(physical_entity abstract_entity)};
In FL, an open subtype partition would be stated as follow:
entity > {physical_entity abstract_entity};
Similarly, if you want to state that a human being is completely
defined as the subtype of 2 exclusive types, you can use:
human_being < {(rational_entity animal)};
And if it is not "completely" defined by these 2 supertypes:
human_being < {rational_entity animal};
> 3. The top of the type hierarchy is represented by the type
> Entity, and the bottom by Absurdity. These are related by
> Absurdity = ~Entity.
Because of the common use of the terms "entity", "situation" and
"thing" in the KR communities, I personally strongly prefer the
following:
thing
> {(entity situation)} {(physical_thing abstract_thing)},
opposite: nothing;
> Absurdity = Cat & Dog.
This syntax forces the use of the type Absurdity/Nothing and
the use of a separate statement (hence, this syntax is
detrimental to concision and readability).
See how my first above example use the link "exclusion".
An abbreviation can be used: in FL, it is '~', as in:
cat ~ dog;
A subtype of "exclusion" is "opposite".
> 5. It is often useful to say that multiple types are pairwise
> disjoint. I suggest the following notation
> Disjoint(Cat, Dog, Fish).
> as a synonym for
> Absurdity=Cat&Dog. Absurdity=Dog&Fish. Absurdity=Fish&Cat.
animal > {cat dog fish}; //this is an "open subtype partition"
or
cat ~ {dog fish};
Philippe
========================
To post a message, send mail to cg@...
To unsubscribe, send mail to majordomo@... with the command
'unsubscribe cg' in the message body.
See http://news.gmane.org/gmane.comp.ai.conceptual-graphs for the mailing list archive.
See http://conceptualgraphs.org for the Conceptual Graph Home Page.
For help or administrative assistance, mail to owner-cg@...