.Open Semantics of English Be very careful of assuming that the way your language divides up the world is the same as any other language's way of slicing the semantic cake. Terminology varies between countries, regions, companies, and even between parts of a company. Also beware the temptation to design a grand hierarchy of all meanings. There have been many attempts in the last 300 years: .See [Eco95] often as part of the design of a universal or perfect language. None of them have stuck. On the other hand you can use these attempts as a source of ideas to model specific application domains and user concepts. There is a well tested classification system for English called Roget's Thesaurus. Each application domain has its own languages and these need to be understood when developing software. There is some evidence that constructing a clear and precise model of such a domain is a step in the direction of better software. Mathematics and logic can be very helpful with eliminating the "goo and dribble" and boiling things down[Asimov]. What follows here are some examples drawn from the twentieth century. By the end of the twentieth century and start of the twenty-first century there were several logical models of natural language placed on the web in the form of `ontologies`. Below are some examples of one way the MATHS notation could be used to express these hierarchies but they are not intended to be a complete and finished description. Professionals have been working on these, see .See http://www.csci.csusb.edu/dick/samples/index.html#Ontologies .See http://www.csci.csusb.edu/dick/lookup.php?search=ontolog for more. This page gives examples of how to use the logical fragment of MATHS to construct models of natural world phenomena like dogs, cats, rocks, and parents($STUFF). This is the best approach when we want to express properties of the objects or entities in a domain. An alternative would be to use Sets and Relations instead of Nets of variables and axioms. This is close to the way that abstract algebras like groups are modeled in MATHS .See http://www/dick/maths/notn_6_Algebra.html .See http://www/dick/maths/math_43_Algebras.html .See http://www/dick/maths/notn_7_OO_vs_Algebra.html for example. The $SUMO ontology is also best modeled this way. See .See Suggested Upper Merged Ontology at the end of this page. . Abbreviation. Natural languages have large numbers of terms indicating objects of different sets and types. This are typically organized in a hierarchy. It is useful to have a simple way of expressing such a hierarchy: either_or_notation::=http://www/dick/maths/notn_16_Classification.html. A statement like .As_is either A or B. asserts the existence of two Boolean variables A and B and the property that precisely `one` of them is true. The above is short hand for: .As_is A::@, .As_is B::@, .As_is |- A or B. .As_is |- not(A and B). Similarly, .As_is either A, B, or C. asserts the three conditions, but only `one` is true at a time. If A is true then B and C are false. .RoadWorksAhead I may be moving the following sample into my directory of samples: .See http://www/dick/samples/ before September 2004. .Open Sampler of Ontologies . Ontological Categories .Source Chi 92, Michelene T H Chi, Figure on page 41 in "The Science & Learning Math and Science", NSF Mosaic V23n2(Summer 92)p37..43 ALL_ENTITIES::=$ Net{ material_objects::@, events::@, mental_states::@. |- (ae1): one ( material_objects, events, mental_states). |- (ae2): if material_objects then either artifacts or natural. |- (ae3): if events then either intentional or constraint_based. |- (ae4): if mental_states then either ideas or emotions. }=::ALL_ENTITIES. Mistakes in learning science: .Box insects not animals - within a category. heat is material - across a category. .Close.Box .RoadWorksAhead Let{ ?? tendency to form poetic/humorous statements? ?? categories ==< Koestler's matrices. ? ?? During the 21st Century one might extend the above taxonomy to include computational_object. ?? All_entities(material_ojects)=$ $STUFF? As defined below? } .RoadWorksAhead Let{ August 2004. I'm getting doubts about this approach. } .Open Stuff This section just lays out a logical framework for talking about various meaningful domains. The idea is that the defined terms like $STUFF, $BEING, etc should be reused in other nets. They are taken from .Source Leech, "Semantics", Penguin Books 1974 .See [Leech 74] Leech preents the idea (from anthropology) that terms in natural language can be given meaning in terms of components: .As_is man +HUMAN+ADULT+MALE .As_is woman +HUMAN+ADULT-MALE .As_is boy +HUMAN-ADULT+MALE .As_is girl +HUMAN-ADULT-MALE Components match the idea of attributes in a MATHS Net. The following Nets translate Leech's diagram on page 121 of his book. STUFF::=Net{ |- Either countable or mass. "butter" is mass, but "dogs" are countable. If countable then either singular or plural. |- if singular or plural then countable. |- Either concrete or abstract. If concrete then either solid, liquid, or gas. |- if solid or liquid or gas then concrete. ()|- abstract iff not solid and not liquid and not gas. If solid then either animate or inanimate. |- if animate or inanimate then solid. }=::STUFF. The above creates a net with Boolean attributes: countable, mass, concrete, abstract, singular, plural, ... and so on. CONCRETE::= $STUFF and concrete. SOLID::= $CONCRETE and solid. . Things THING::=$SOLID and inanimate. . Beings BEING::=$SOLID and animate and following .Net |- animate. |- either masculine or feminine. |- either adult or child. |- either plant or creature. |- either living or dead. age::years. .Close.Net BEING. CREATURE::=$BEING and creature and Net{ `kritters` and `us`. |- either human or animal. If animal then $ANIMAL }=::BEING. We can now express Leech's example above: man::=$ $CREATURE and human and adult and masculine. woman::=$ $CREATURE and human and adult and feminine. boy::=$ $CREATURE and human and child and masculine. girl::=$ $CREATURE and human and child and feminine. . Animals ANIMAL::= $CREATURE and animal and following, Net{ |- animal. Kinds::={bird, fish, insect, mammal,... }. kind::$Kinds. |- $SPECIES. }=::ANIMAL. SPECIES::= Net{ Mammal_Species::={cat, dog, horse, cow, wolf,... }. If kind=mammal then species::$Mammal_Species. ... |- $BREED. }=::SPECIES. BREED::=Net{ Dog_Breed::={mixed, alsation,terrier, spanish,... }. If species=dog then breed::$Dog_Breed. ... }=::BREED. |-Shadow in $ $ANIMAL(dead, female, adult, kind=mammal, species=dog, breed=mixed ). .Close Stuff } . Spatial Relations SPATIAL::=Net{ relation:: @($ $STUFF and concrete, $ $STUFF and concrete). |- Either normal or converse. |- Either horizontal or vertical. If horizontal then either front_to_back or side_to_side. |- Either close or near or unknown or far. Directions::={V,F,S}. direction::$Directions=if(vertical, V, if(front_to_back, F, S)). Distances::={C,N,F,U}. distance::$Distances=if(close,C,if(near,N,if(far,F,U))). }=::SPATIAL. over::= SPATIAL(normal, vertical). under::= SPATIAL(converse, vertical). in_front_of::= SPATIAL(normal, front_to_back). behind::= SPATIAL(converse, front_to_back). on_the_left::= SPATIAL(normal, side_to_side). on_the_right::= SPATIAL(converse, side_to_side). For R,S:$ $SPATIAL, R parallel S::@=R (= mod direction)&(= mod distance) S. |- For R,S:$ $SPATIAL, R.normal and S.converse and R parallel S iff R.relation = /(S.relation). |- For R,S:$ $SPATIAL, if R.horizontal and S.vertical then no R.relation & S.relation. |- For R,S:$ $SPATIAL, if R.front_to_back and S.side_to_side then no R.relation & S.relation. For more on natural spatial relations see .See http://www/dick/maths/math_93_Graphics.html .Open Tenses, Time, and Temporal modalities $TBD Also see .See ./logic_9_Modalities.html .Close Tenses, Time, and Temporal modalities . Colors .Source Leech pp234-237. colour::={ white, black, red, green, yellow, blue, brown, purple, pink, orange, grey, ...}. color::=colour. . Kinship male::=$ $BEING and masculine. female::=$ $BEING and feminine. .Source Anthropology?? KINSHIP::=Net{ Includes animal and plant kinship and so ignores marriage. parent::@($ $BEING, $ $BEING), |- (KIN0): parent ==> (<>). can not be ones own parent. sibling:: @($ $BEING,$ $BEING). |- sibling= (/parent;parent) & (<>). |- (KIN1): no sibling & parent. (sibling)|-(KIN2):sibling ==> (<>). (sibling, STANDARD)|-(KIN3): sibling in Symmetric & Irreflexive & Transitive. child_of::=/parent. father::= male;parent. For all x,y:$ $BEING, x father y::=`x is the father of y`. mother::=female;parent. For all x,y:$ $BEING, x mother y::=`x is the mother of y`. |-(KIN4):father and mother \in $ $BEING(1)-(any)$ $BEING. For R: {father, mother, son,daughter, child_of, sister, brother, ....}, x R y::=`x is a R of y`. son::= male;child_of. daughter::=female;child_of. sister::=female;sibling. brother::=male;sibling. grandfather::=father;parent. grandmother::=mother;parent. grandparent::=parent;parent. |-(KIN5):grandparent >== {grandfather, grandmother}. granddaughter::=daughter;child_of. grandson::=son;child_of. grandchild::=child_of;child_of. (above)|-(KIN6): grandchild>=={grandson, granddaughter}. (above)|-(KIN7): grandparent = /grandchild uncle::=brother;parent. aunt::=sister;parent. nephew::=son;sibling. niece::=daughter;sibling. first_cousin::=/parent;sibling;parent. second_cousin::=/parent;/parent;sibling;parent;parent. cousin::=first_cousin | /parent;cousin;parent. first_cousin_once_removed::=/parent;first_cousin | first_cousin;parent. For x,y:$ $BEING, n,m:Positive, (x is the n th_cousin m th_remove of y) ::=child_of^(n+m);sibling;parent^n | child_of^n;sibling;parent^(n+m). ... }=::KINSHIP. . Structure of Objects .See http://www/dick/maths/math_21_Order.html#PART_WHOLE . Ownership OWNERSHIP::=Net{ This following is somewhat human-chauvinist. owner::$ $CREATURE(human). owned:: $ $STUFF, slave::@= owned in $ $CREATURE(human). }=::OWNERSHIP. ownership:@OWNERSHIP. for x,y:$ $STUFF, x owns y ::= x /owner;ownership;owned y. .Let The following definition is past tense: shadow = the ($ $ANIMAL(female, adult, kind=mammal, species=dog. breed=mixed) & Tricia./owns ). Slavery::@=some( $ $CREATURE(human) & ownership./owned). .Close.Let . Suggested Upper Merged Ontology SUMO::=http://icosym-nt.cvut.cz/kifb/en/. SUMO::acronym="Suggested Upper Merged Ontology". Here is my second draft at transmogrifying the top of $SUMO into MATHS. Because it is expressed in terms of sets of objects and the properties of the sets (not the properties of the objects in the sets) it best to express it as a net of set definitions and axioms about these sets. top_of_SUMO_in_MATHS::=Net{ `encoding of a tiny part of the top of the Suggested Upper Merged Ontology...` Entity::Sets. |- (E1): Some $Entity. |- (E2): $Entity ==< {$Abstract, $Physical}. instance::@( $Entity, $Set_or_class). subclass::@( $Set_or_class, $Set_or_class). ... about 20 other relations. |- For all c, if c $instance $Class then c $subclass $Entity. Physical::@$Entity. Object::@$Physical. Process::@$Physical. |- Physical==< {$Object, $Process}. |- For all p:$Entity, p in $Physical iff for some t:$Entity, l::$Entity( p located l and p during t). ()|- Physical = |[t:$Entity, l:$Entity](t./during & l./located). ...and 9 more... Abstract::@ $Entity. |- For all a:$Entity, a in $Abstract iff not for some p:$Entity( a located p or a during p). ... and more... Set_or_class::@$Abstract. Class::@$Set_or_class. }=::top_of_SUMO_in_MATHS. .Close Sampler of Ontologies .Open Systems English -- a subset of Basic English SYSTEMS::=Net{ A Language for Describing Systems. .Key P3Basic English -- a subset of Basic English that uses the present tense(P) and third person only(3). Systems_English::semantics=system. system::Sets. Systems_English::syntax=Net{ Use MATHS_Lexemes. .See http://www/dick/maths/notn_10_Lexicon.html description::=L(facts, punctuation) period. fact::=subject verb (object|) #(direction) (target|), .As_is SASS is a `Simple ASsembler System` .As_is Pass1 is a process in SASS .As_is Pass2 is a process in SASS .As_is Symbols is a store in SASS .As_is SASS gets input from source_code .As_is SASS sends output to object_code .As_is object_code is output from SASS .As_is Pass1 gets lines from source_code .As_is Pass1 sends labels and addresses to Symbols .As_is Pass2 gets instructions from source_code .As_is Pass2 gets addresses from symbols .As_is Pass2 gives object_code to output verb::="does"|"makes"|"puts"|"gets"|"takes"|"gives"|"is"|"has"|"leaves"|"keeps"|"sends", the Basic English verbs in the third person singular. direction::="in"|"on"|"to"|"from"|"off"|"thru"|"by"|"of"|"after"|"before"| "at"|"with"|"over"|"under"|"up"|"down"|"among"|"about"|"between"|"across"|"out", ripped off from Basic English. subject::=name, object::=compound|"input"|"output"|"a process"|"an object"|"data"|"a store"|"an entity". target::=thing, compound::=thing #("and" thing), thing::=("a"|"the") type | name | other_language_string. }=::Systems_English. Data_Base::= @Systems_English.syntax.facts. parse::Systems_English.syntax.description->@Systems_English.syntax.facts. parse("")={}, for f:Systems_English.syntax.facts, parse(f)={f}, for f:Systems_English.syntax.facts, p:punctuation, s:Systems_English.syntax.description, parse(f!p!s)={f} | parse(s). . Example of a Simple Assembler System Simple_assembler:: Systems_English.syntax.description= "SASS is a `Simple ASsembler System`. Pass1 is a process in SASS, Pass2 is a process in SASS. Symbols is a store in SASS. SASS gets input from source_code. SASS sends output to object_code. object_code is output from SASS. Pass1 gets lines from source_code. Pass1 sends labels and addresses to Symbols. Pass2 gets instructions from source_code. Pass2 gets addresses from symbols. Pass2 gives object_code to output." . Simple_assembler::Data_Base=parse following .Set "SASS is a 'Simple ASsembler System'" "Pass1 is a process in SASS" "Pass2 is a process in SASS" "Symbols is a store in SASS" "SASS gets input from source_code" "SASS sends output to object_code" "object_code is output from SASS" "Pass1 gets lines from source_code" "Pass1 sends labels and addresses to Symbols" "Pass2 gets instructions from source_code" "Pass2 gets addresses from symbols" "Pass2 gives object_code to output" . .Close.Set Example Queries P'!"is a"!T'!"in SASS" in Simple_Assembler; User:!P,T. "SASS sends"!#char!"to" X' in Simple_Assembler; User!X. A semantic approach is to use natural predicates. FACTS::=Net{ Things::$ $THING, things::Expression(Things). For x, y:things, (x is a y) ::@. For x, y, z:things, (x is a y of z) ::@. For x, y, z, (x gets y from z) ::@. For x, y, z, (x sends y to z) ::@. For x, y, (x is output from z) ::@. For x, y, z, (x gives y to z) ::@. }=::FACTS. Or infix operators with structures isa::@($ $THING, $ $THING), isa::@($ $THING, $ Net{type:THING, in:$ $THING }), gets::@($ $THING, $ Net{it, from:$ $THING }), sends::@($ $THING, $ Net{ it, to:$ $THING }), is_output_from::@($ $THING, $ $THING), gives::@($ $THING, $ Net{ it, to:$ $THING }). }=::SYSTEMS. .Close Systems English -- a subset of Basic English .Close Semantics of English