1
ФОРМАЛЬНОЕ ОПРЕДЕЛЕНИЕ ВИДА ГОРНОЙ ПОРОДЫ
НА ОСНОВЕ АЛГОРИТМА КЛАССИФИКАЦИИ
А. В. Шкотин, В. М. Ряховский, Д.И. Кудрявцев
Государственный Геологический Музей им. Вернадского РАН, 2014 г.
Моховая ул., д. 11, стр. 11, г. Москва, 125009, Россия. E-mail: ashkotin@acm.org
В работе представлены результаты исследования, в котором языком представления знаний выбран язык много-
сортного исчисления предикатов второго порядка, в котором допустимы операторы (функции от предикатов) и кван-
торы по предикатам. Такой язык даёт возможность записывать знания предметной области компактно и наглядно.
Также в работе представлен (частично) алгоритм классификации образцов горных пород и показано как из него
извлечь формальное определение горной породы. В результате получена точная математическая формула определе-
ния конкретной горной породы (гарцбургит) эквивалентная содержательному определению геологов. Фактически на
примере конкретного классификатора (горных пород) показано как получить из классификатора совокупность фор-
мальных определений содержащихся в нём терминов.
Ключевые слова: петрология, формальное определение, алгоритм классификации, формальная теория.
АКТУАЛЬНОСТЬ РАБОТЫ. Одним из важней-
ших классических направлений искусственного
интеллекта является применение языков и методов
математической логики для записи и обработки
знаний естественных наук. В последнее время по-
явились и широко используются языки семейства
Description Logics [1] и OWL 2 [2]. Обладая ограни-
ченной выразительной силой, они позволяют эф-
фективно обрабатывать записанные на них знания,
но для формализации знаний предметной области
приходится применять более сильные языки. В ра-
боте такими языками выбраны язык исчисления
предикатов второго порядка и графический язык
блок-схем. Показано как с помощью этих языков
точно задать классифицирующую функцию (алго-
ритм) и извлечь из неё формальное определение
конкретного вида горной породы. Подход может
быть применён к любой предметной области науки
и техники.
Три основных задачи:
- определение алгоритма классифицирующего
образец породы по его характеристикам;
- уточнение правил классификации;
- выявление формальных определений видов
горных пород.
МАТЕРИАЛ И РЕЗУЛЬТАТЫ ИССЛЕДОВА-
НИЙ. Первоисточником алгоритма классификации
являются официальные рекомендации IUGS [3].
Алгоритм задан как совокупность функций, для
каждой из которых дана блок-схема. Алгоритм и
необходимые определения даны для ультрамафиче-
ских видов плутонических горных пород.
Элементы формальной теории. Формальная
теория предметной области Петрология строится
аналогично формальной теории математической
предметной области: выявляются первичные пре-
дикаты и функции (включая операторы), даются
определения «вторичных» предикатов и функций.
Формулируются аксиомы и теоремы, последние
доказываются.
Важным оператором данной предметной обла-
сти является VPC (Volume Percentage Content) -
оператор объёмного процентного содержания ве-
щества в твёрдом теле. Получая на вход предикат
вещества (обычно минерала) он возвращает функ-
цию, которая в свою очередь возвращает "на твёр-
дом теле" число - объёмное процентное содержание
вещества в данном теле. Так VPC(Ol)(sb1) возвра-
щает значение объёмного процентного содержания
оливина у образца горной породы, которому соот-
ветствует переменная sb1.
Как пример аксиомы предметной области рас-
смотрим аксиому ограничения на значения величи-
ны процента. Используя квантор по предикату
можно записать единую аксиому формулой второго
порядка:
∀p:(SB:TV) ∀x:SB Substance(p) →
(0 ≤ VPC(p)(x) ≤ 100)
В ней, TV - сорт истинностных значений, состо-
ящий из True, False. p:(SB:TV) означает, что p есть
функция из SB в TV, т.е. предикат. Substance(p)
означает, что p предикат субстанции. Он удовлетво-
ряет требованию, что если некое тело состоит из
вещества p, то и любая его часть тоже состоит из
вещества p.
Для формального определения вида горной по-
роды необходимы предикаты минералов, которые
считаются первичными. Например, для оливина
предикат будет обозначаться Ol и если Ol(sb2) рав-
но True, то образец которому соответствует пере-
менная sb2 целиком состоит из оливина. Состав
минералов необходимых для реализованной части
алгоритма следующий: melilite, kalsilite, leucite, Ol
(оливин), hornblende, garnet, spinel, biotite.
Кроме того нужны также группы минералов
Opx, Cpx, Q, A, P, F, M (см. [3] стр. 4, [4] стр. 6).
Непосредственно при формализации такие
группы оказываются операторами – предикатами от
предикатов. Так M(muscovite)=true, означает, что
предикат muscovite относится к группе M. Вместо
введения такого «предиката от предикатов» вводит-
ся предикат от твёрдого тела для которого верна
теорема позволяющая использовать его при опре-
делении вида горной породы. Формальное опреде-
ление такого предиката получается из определения
данного в [3], [4] и при необходимости консульта-
ций с геологами. Так следуя прямому указанию в
[4] стр. 6:
"M = mafic and related minerals, that is all other
minerals apart from QAPF; this includes all micas (in-
cluding muscovite), amphibole, pyroxene, olivine,
opaque minerals, accessory minerals (zircon, apatite,
2
titanite etc.), epidote, allanite, garnet, melilite, monti-
cellite, wollastonite, primary carbonate, etc"
получаем:
M(sb1:SB) ≝ not(Q(sb1) or A(sb1) or P(sb1) or
F(sb1)).
Можно доказать следующую теорему:
∀sb1:SB VPC(M)(sb1) = 100 - (VPC(Q)(sb1)
+VPC(A)(sb1)+VPC(P)(sb1)+VPC(F)(sb1)).
Определения играют фундаментальную роль
при построении формальной теории предметной
области. Нам понадобятся следующие «вторичные»
предикаты для характеристики образца: pyroclastic,
kimberlite, lamproite, lamprophyre, charnockite,
plutonic, volcanic. Эти предикаты качественной ха-
рактеристики образца имеют содержательные опре-
деления из которых формализовано pyroclastic:
pyroclastic(x:SB) ≝ clastic(x) and (∀ y:SB clast(y) and
(y part_of x) → volcanic_eruption_result(y))
Здесь применена обычная инфиксная форма за-
писи бинарных предикатов и функций: (y part_of x)
есть тоже самое что и part_of(y,x).
Рассмотрим какие DL-операции нужны для за-
писи формулы предиката pyroclastic и какие допол-
нительные предикаты нужны для OWL2.
Формула part_of(x,y) and clast(x) эквивалентна
part_of(x,y) and id(clast)(x,y) и далее (part_of
∩id(clast))(x,y). И мы получаем
pyroclastic ≡ clastic and ∀(part_of∩id(clast))-
.volcanic_eruption_result
И окончательно в DL:
pyroclastic ≡ clastic and ∀(part_of-
∩id(clast))
.volcanic_eruption_result
В OWL 2 нет операций: r1∩r2, id(c), поэтому
вводим в DL определение
clast_part_of(x,y) ≝ part_of(x,y) and clast(x)
(1)
Или clast_part_of ≡ part_of∩id(clast)
Считая clast_part_of первичным в OWL 2 полу-
чаем:
pyroclastic ≡ clastic and ∀clast_part_of-
.volcanic_eruption_result
Ясно что из (1) следует:
clast_part_of ⊑ part_of
и
∃clast_part_of.⊤ ⊑ clast
Эти OWL2-аксиомы следует добавить в теорию
(OWL2-онтологию) как ослабление/вместо (1).
Для группировки минералов «карбонаты» пет-
рологи предложили следующую формулу:
carbonates(sb1:SB) ≝ calcite(sb1) or dolomite(sb1) or
magnesite(sb1) or siderite(sb1) or ankerite(sb1) or
aragonite(sb1) or vaterite(sb1) or strontianite(sb1).
Может быть доказана следующая теорема:
∀sb1:SB VPC(carbonates)(sb1) = VPC(calcite)(sb1) +
VPC(dolomite)(sb1) + VPC(magnesite)(sb1) +
VPC(siderite)(sb1) + VPC(ankerite)(sb1) +
VPC(aragonite)(sb1) + VPC(vaterite)(sb1) +
VPC(strontianite)(sb1).
Нам понадобятся дополнительные определения,
которые есть у геологов в неявной форме. Так
определения вспомогательных предикатов OOC,
OPH понадобятся для формализации диаграмм
классификации ультрамафических горных пород по
минеральному составу [3], Fig. 2.9. p. 28, (см. Рис.
1).
OOC(sb1:SB) ≝ Ol(sb1) or Opx(sb1) or Cpx(sb1).
OPH(sb1:SB) ≝ Ol(sb1) or Px(sb1) or horn-
blende(sb1).
Рис. 1 Модальная классификация горных пород
Алгоритм классификации. Алгоритм задан со-
вокупностью блок-схем. Блок-схема есть специаль-
ный вид правой части определения функции. В уз-
лах блок-схемы либо действие, либо условие. У
блок-схемы могут существовать собственные
(внутренние) переменные, задаваемые «квантором»
Var. В блок-схемах употребляется операция “+” -
конкатенация, соединение двух строк. Значок «∘» в
формулах условий обозначает применение унарно-
го оператора к предикату.
Обозначим формулу возвращающую строку
<терм>. В блок-схемах используются следующие
действия:
return <терм>. Значение терма становится значе-
нием функции;
abort <строка>. Выполнение алгоритма заверша-
ется аварийно и выдаётся сообщение;
<переменная>:=<терм>. Внутренней перемен-
ной блок схемы присваивается значение терма.
Алгоритм верхнего уровня задан классифици-
рующей функцией rock_type. Именно эту функцию
надо вызывать, чтобы классифицировать образец.
Исходный текст для алгоритма находится на стр.6
первоисточника (см. также [4]).
3
Рис. 2 – Блок-схема rock_type
Далее для каждой порции исходного текста да-
ётся формальное условие перехода к соответству-
ющей секции:
"(1) if the rock is considered to be of pyroclastic
origin go to section 2.2 “Pyroclastic Rocks and Tephra”
on p.7" - pyroclastic(sb1);
"(2) if the rock contains > 50% of modal carbonate
rocks go to section 2.3 “Carbonatites” on p.10" -
VPC(carbonates)(sb1)>50;
"(3) if the rock contains > 10% of modal melilite go
to section 2.4 “Melilite-bearing Rocks” on p.11" -
VPC(melilite)(sb1)>10;
"(4) if the rock contains modal kalsilite go to sec-
tion 2.5 “Kalsilite-bearing Rocks” on p.12" -
VPC(kalsilite)(sb1)>0;
"(5) check to see if the rock is a kimberlite as de-
scribed in section 2.6 on p.13" - kimberlite(sb1);
"(6) check to see if the rock is a lamproite as de-
scribed in section 2.7 on p.16" - lamproite(sb1);
"(7) if the rock contains modal leucite go to section
2.8 “Leucite-bearing Rocks” on p.18" -
VPC(leucite)(sb1)>0;
"(8) check to see if the rock is a lamprophyre as de-
scribed in section 2.9 on p.19. Note ..." - lampro-
phyre(sb1);
"(9) check to see if the rock is a charnockite as de-
scribed in section 2.10 on p.20" - charnockite(sb1);
"(10) if the rock is plutonic, as defined in section
2.1, go to section 2.11 “Plutonic rocks” on p.21" - plu-
tonic(sb1)
"(11) if the rock is volcanic, as defined in section
2.1, go to section 2.12 “Volcanic rocks” on p.30" - vol-
canic(sb1);
"(12)If you get to this point, either the rock is not
igneous or you have made a mistake." - abort("either
the rock is not igneous or you have made a mistake").
Определение функции rock_type использует блок-
схему:
rock_type(sb1:SB):String ≝<блок-схема Рис. 2>.
Вполне возможно, что, когда будут даны опре-
деления для предикатов условий приведённых вы-
ше окажется, что их объединение будет всегда вер-
но. И наоборот - если это не так, то всегда найдётся
(теоретически) сочетание характеристик образца
магматической породы, которое приведёт к abort.
Одноместные предикаты, использованные в
формулах, будем называть предикатами верхнего
уровня. Четыре формулы основаны на модальном
минеральном составе образца (они начинаются с
VPC). Определения предикатов верхнего уровня
ещё не даны. Но предполагается, что они есть.
Большинство предикатов непосредственно упо-
требляются в тексте первоисточника и так как сам
текст написан в стиле алгоритма его формализация
выполнена "один к одному". Но в двух случаях
пришлось сделать предположения, подтверждённые
петрологами.
Случай 6-1. Текст: "(1) if the rock is considered to
be of pyroclastic origin go to section 2.2 “Pyroclastic
Rocks and Tephra” on p.7". Чтобы не вводить преди-
кат "pyroclastic_origin" предположим, что Tephra
является pyroclastic. Тогда критерий перехода к ал-
горитму секции 2.2 выглядит так: pyroclastic(sb1).
Петрологи подтвердили предположение.
Случай 6-2. Текст: "(7) if the rock contains modal
leucite go to section 2.8 “Leucite-bearing Rocks” on
p.18". Теоретически "contains" может означать "зна-
чительное количество" (например >5%) было сде-
лано предположение что "contains" означает ">0".
Тогда критерий перехода к алгоритму секции 2.8
выглядит так: VPC(leucite)(sb1)>0. Петрологи под-
твердили и это предположение.
Функция ultramafic_rock_type. Её алгоритм
написан на основе текста параграфа 2.11.2
"ULTRAMAFIC ROCKS (M > 90%)", стр.28-29 (см.
[3] или [4]).
Каждая из диаграмм (см. Рис. 1), применяющих-
ся для классификации ультрамафических пород,
реализована в виде отдельной классифицирующей
функции, которая фактически возвращает наимено-
вание зоны треугольника исходя из характеристик
образца. Для верхнего треугольника функция
названа OOC_diagram_field, для нижнего -
OPH_diagram_field.
На стр.28 [3] имеем: "The Subcommission
(Streckeisen, 1973, 1976) recommended two diagrams,
both of which are shown in Fig. 2.9. One for the rocks
consisting essentially of olivine, orthopyroxene, and
clinopyroxene, and the other for rocks containing
hornblende, pyroxenes, and olivine."; соответственно
как критерий выбора между диаграммами взято
наличие или отсутствие в образце минерала horn-
4
blende:
VPC(hornblende)(sb1) = 0 - для верхней диа-
граммы,
VPC(hornblende)(sb1) > 0 - для нижней.
Дадим определение функции ultramafic_rock_type:
ultramafic_rock_type(sb1:SB) :String ≝
Var root_name, q_name, q_garnet, q_spinel:String
<Блок-схема Рис. 3>.
Рис. 3 – Блок-схема ultramafic_rock_type
Основную часть функции ultramafic_rock_type,
составляют инструкции по добавлению квалифика-
ционного имени к имени породы в случае, когда
образец содержит garnet или spinel: "Ultramafic
rocks containing garnet or spinel should be qualified in
the following manner. If garnet or spinel is less than
5% use garnet-bearing peridotite, chromite-bearing
dunite etc. If garnet or spinel is greater than 5% use
garnet peridotite, chromite dunite etc." (p.29 [3]).
Квалификация для garnet и spinel определяется
независимо. При присутствии в образце обоих ми-
нералов порядок слов квалификации в термине - по
возрастающей концентраций.
Критерий "входа" в квалификацию:
VPC(garnet)(sb1) + VPC(spinel)(sb1) > 0
Далее указаны критерии квалификации и соот-
ветствующее добавляемое имя.
Таблица 1. Квалификационное имя
критерий имя
(VPC(garnet)(sb1)>0) and
(VPC(garnet)(sb1) < 5)
garnet-bearing_
(VPC(garnet)(sb1) ≥ 5) garnet_
(0<VPC(spinel)(sb1)) and
(VPC(spinel)(sb1) < 5)
chromite-bearing_
(VPC(spinel)(sb1) ≥ 5) chromite_
Классифицирующие функции ultramafic диа-
грамм. Две диаграммы Fig.2.9 [3] p.28 (см. также
[4]) (см. Рис 1) формализованы в виде функций:
OOC_diagram_field (верхний треугольник),
OPH_diagram_field (нижний треугольник).
Формализация диаграмм требует некоторых
уточнений:
- вычисления координат точек пересечения не-
которых линий. Так линии внутреннего треуголь-
ника имеют значение 5, т.к. в его вершинах это зна-
чение взятое дважды плюс 90 должно дать 100.
- решения какой из именованных зон диаграммы
принадлежит граничная линия ("граница").
Алгоритм классифицирующей функции диа-
граммы намеренно выполнен как "цепочка" if-узлов
каждый из которых "отвечает" за одну конкретную
именованную зону диаграммы. Каждое условие
представляет собой систему линейных неравенств.
Совокупность таких условий обладает важными
математическими свойствами:
- каждые два условия не совместны, т.к. соот-
ветствующие им зоны не пересекаются;
- объединение всех условий вместе даёт нера-
венства для треугольника, т.к. условия "накрывают"
весь треугольник.
Описанные свойства могут быть проверены "ав-
томатически", если определения "загрузить" в ма-
шину вывода (МВ), работающую с линейными не-
равенствами. И такие МВ есть (например, Racer),
т.к. запись линейных неравенств возможна исполь-
зуя расширение OWL 2 - Data Range Extension: Lin-
ear Equations.
Блок-схема OOC_diagram_field (верхний тре-
угольник).
Дадим определение функции OOC_diagram_field:
OOC_diagram_field(sb1:SB):String ≝ <Блок-схема
Рис. 4>
Блок-схема OPH_diagram_field (нижний тре-
угольник) приведена в отчёте [5].
5
Рис. 4 – Блок-схема OOC_diagram_field
Формальное определение горной породы. Алго-
ритм классификации содержит в неявном виде
определения всех видов магматических горных по-
род. Из него можно получить определения в виде
формул, которые оказываются формулами с одной
свободной переменной исчисления предикатов пер-
вого порядка с числами. Сама формула того или
иного вида говорит о "сложности" понятия, стояще-
го за термином, а также указывает все понятия на
которые опирается данное. Что чрезвычайно важно
для поиска первичных понятий.
Далее описано получение из алгоритма форму-
лы для harzburgite, получение формулы для dunite
есть в отчёте [5].
Определим вспомогательный предикат:
nf9(sb1:SB) ≝ not pyroclastic(sb1) and not
VPC(carbonates)(sb1)>50 and not
VPC(melilite)(sb1)>10 and not VPC(kalsilite)(sb1)>0
and not kimberlite(sb1) and not lamproite(sb1) and not
VPC(leucite)(sb1)>0 and not lamprophyre(sb1) and not
charnockite(sb1)
который верен в том случае, если образец не
удовлетворяет первым 9-ти условиям верхнего
уровня блок-схемы rock_type. Преобразовав форму-
лу получим:
nf9(sb1:SB) ≝ not (pyroclastic(sb1) or kimberlite(sb1)
or lamproite(sb1) or lamprophyre(sb1) or charnock-
ite(sb1)) and VPC(carbonates)(sb1)≤50 and
VPC(melilite)(sb1)≤10 and VPC(kalsilite)(sb1)=0 and
VPC(leucite)(sb1)=0
harzburgite. Получим определение предиката
породы harzburgite. Предикат harzburgite будучи
применён к элементу сорта SB должен давать true
если образец является harzburgite, а в противном
случае - false. Чтобы получить предикат надо прой-
ти по блок-схемам сверху вниз и собрать условия,
приводящие к узлу на блок-схеме
OOC_diagram_field выдающему значение
«harzburgite». Эти условия надо соединить логиче-
ской операцией «and». Получится формула:
nf9(sb1) and plutonic(sb1) and VPC(M)(sb1) ≥ 90 and
VPC(hornblende)(sb1)=0 and
(0.4*VPC(OOC)(sb1) ≤ VPC(Ol)(sb1)) and
(VPC(Ol)(sb1) ≤ 0.9*VPC(OOC)(sb1)) and (0 ≤
VPC(Cpx)(sb1)) and (VPC(Cpx)(sb1) <
0.05*VPC(OOC)(sb1))
Подставив формулу nf9 и перегруппировав and-
члены получим искомое определение:
harzburgite(sb1:SB) ≝
plutonic(sb1) and not (pyroclastic(sb1) or kimber-
lite(sb1) or lamproite(sb1) or lamprophyre(sb1) or
charnockite(sb1))
and
VPC(carbonates)(sb1)≤50 and VPC(melilite)(sb1)≤10
and VPC(M)(sb1) ≥ 90 and VPC(kalsilite)(sb1)=0 and
VPC(leucite)(sb1)=0 and VPC(hornblende)(sb1)=0
and
0.4*VPC(OOC)(sb1)≤VPC(Ol)(sb1)≤0.9*VPC(OOC)(
sb1) and VPC(Cpx)(sb1)<0.05*VPC(OOC)(sb1).
Таким образом, точное определение вида магма-
тической горной породы harzburgite состоит из трёх
частей:
1. качественные характеристики;
2. абсолютные ограничения на модальный со-
став;
3. относительные ограничения на модальный
состав.
ВЫВОДЫ. Создание алгоритма потребовало
уточнения текста [3], т.е. текст содержит недоста-
точно информации и приходится делать предполо-
6
жения, которые конечно должны быть подтвержде-
ны. В идеале блок-схемы и определения функций
должны стать частью документа [3].
Важным результатом алгоритмизации является
выявление первичных предикатов и функций, кото-
рые используются в определениях других, именно
они будут "символами теории" при построении
формальной теории для Петрологии.
Получено формальное определение вида кон-
кретной магматической горной породы, которое
оказалось системой линейных неравенств с одной
переменной.
Для них существуют эффективные машины вы-
вода. Что даёт возможность применять формулы
для автоматической классификации образцов, а
также анализировать всю совокупность определе-
ний математическими методами.
Развиваемый подход укладывается в рамки
направления описанного в [6].
Авторы выражают благодарность Dr. Stephen M.
Richard из Arizona Geological Survey за консульта-
ции по петрологии и Dr. Pavel Klinov из University
of Ulm за консультации по Description Logics.
ЛИТЕРАТУРА
1. F. Baader, D. Calvanese, D. L. McGuinness, D.
Nardi and P. F. Patel-Schneider (eds.) The Description
Logic Handbook: Theory, Implementation, and Appli-
cations. 2nd Edition. Cambridge University Press,
2010.
2. P. Hitzler, M. Kroetzsch, B. Parsia, P. F. Patel-
Schneider, S. Rudolph (eds.) OWL 2 Web Ontology
Language: Primer. W3C Recommendation, 2009.
3. Le Maitre, L.E., ed. 2002. Igneous Rocks: A Cla-
ssification and Glossary of Terms 2nd edition, Cam-
bridge.
4. Gillespie, M R, and Styles, M T. 1999. BGS Rock
Classification Scheme, Volume 1, Classification of
igneous rocks. British Geological Survey Research
Report, (2nd edition), RR 99–06.
5. А.В. Шкотин, В.М. Ряховский, Д.И. Кудрявцев.
Алгоритм классификации магматических горных
пород и формальное определение вида горной по-
роды (Версия 2) Исследовательский отчёт. ГГМ
РАН, 2014.
6. Ernest Davis, Representations of commonsense
knowledge, Morgan Kaufmann, 1990.
A CLASSIFICATION ALGORITHM-BASED FORMAL ROCK TYPE DEFINITION
A.V. Shkotin, V.M. Riakhovsky, D.I. Kudryavtsev
Vernadsky State Geological Museum, Russian Academy of Sciences, 2014 г.
11 Mokhovaya Street, Building 11, Moscow 125009, Russia E-mail: ashkotin@acm.org
The work presents the results of a study where a many-sorted second-order predicate calculus language permitting
operators (functions of predicates) and predicate quantifiers is selected as the knowledge representation language. Such
language enables recording the knowledge of the application area in a compact and vivid form.
The work also (partially) presents a rock sample classification algorithm and shows how to extract a formal rock
definition from this algorithm. The result is a precise mathematical formula of a particular rock (harzburgite) definition,
which is equivalent to the informal definition used by geologists. A specific classifier (of rocks) was actually used to
show how the totality of formal definitions of its component terms can be obtained.
Кey words: petrology, formal definition, classification algorithm, formal theory.
REFERENCES
1. F. Baader, D. Calvanese, D. L. McGuinness, D.
Nardi and P. F. Patel-Schneider (eds.) The Description
Logic Handbook: Theory, Implementation, and Appli-
cations. 2nd Edition. Cambridge University Press,
2010.
2. P. Hitzler, M. Kroetzsch, B. Parsia, P. F. Patel-
Schneider, S. Rudolph (eds.) OWL 2 Web Ontology
Language: Primer. W3C Recommendation, 2009.
3. Le Maitre, L.E., ed. 2002. Igneous Rocks: A Cla-
ssification and Glossary of Terms 2nd edition, Cam-
bridge.
4. Gillespie, M R, and Styles, M T. 1999. BGS Rock
Classification Scheme, Volume 1, Classification of
igneous rocks. British Geological Survey Research
Report, (2nd edition), RR 99–06.
5. A.V. Shkotin, V.M. Riakhovsky, D.I. Kudryavtsev.
Classification algorithm of igneous rocks and the for-
mal definition of the type of rock (Version 2) Research
report. SGM RAS, 2014.
6. Ernest Davis, Representations of commonsense
knowledge, Morgan Kaufmann, 1990.

формальное определение вида горной породы

  • 1.
    1 ФОРМАЛЬНОЕ ОПРЕДЕЛЕНИЕ ВИДАГОРНОЙ ПОРОДЫ НА ОСНОВЕ АЛГОРИТМА КЛАССИФИКАЦИИ А. В. Шкотин, В. М. Ряховский, Д.И. Кудрявцев Государственный Геологический Музей им. Вернадского РАН, 2014 г. Моховая ул., д. 11, стр. 11, г. Москва, 125009, Россия. E-mail: ashkotin@acm.org В работе представлены результаты исследования, в котором языком представления знаний выбран язык много- сортного исчисления предикатов второго порядка, в котором допустимы операторы (функции от предикатов) и кван- торы по предикатам. Такой язык даёт возможность записывать знания предметной области компактно и наглядно. Также в работе представлен (частично) алгоритм классификации образцов горных пород и показано как из него извлечь формальное определение горной породы. В результате получена точная математическая формула определе- ния конкретной горной породы (гарцбургит) эквивалентная содержательному определению геологов. Фактически на примере конкретного классификатора (горных пород) показано как получить из классификатора совокупность фор- мальных определений содержащихся в нём терминов. Ключевые слова: петрология, формальное определение, алгоритм классификации, формальная теория. АКТУАЛЬНОСТЬ РАБОТЫ. Одним из важней- ших классических направлений искусственного интеллекта является применение языков и методов математической логики для записи и обработки знаний естественных наук. В последнее время по- явились и широко используются языки семейства Description Logics [1] и OWL 2 [2]. Обладая ограни- ченной выразительной силой, они позволяют эф- фективно обрабатывать записанные на них знания, но для формализации знаний предметной области приходится применять более сильные языки. В ра- боте такими языками выбраны язык исчисления предикатов второго порядка и графический язык блок-схем. Показано как с помощью этих языков точно задать классифицирующую функцию (алго- ритм) и извлечь из неё формальное определение конкретного вида горной породы. Подход может быть применён к любой предметной области науки и техники. Три основных задачи: - определение алгоритма классифицирующего образец породы по его характеристикам; - уточнение правил классификации; - выявление формальных определений видов горных пород. МАТЕРИАЛ И РЕЗУЛЬТАТЫ ИССЛЕДОВА- НИЙ. Первоисточником алгоритма классификации являются официальные рекомендации IUGS [3]. Алгоритм задан как совокупность функций, для каждой из которых дана блок-схема. Алгоритм и необходимые определения даны для ультрамафиче- ских видов плутонических горных пород. Элементы формальной теории. Формальная теория предметной области Петрология строится аналогично формальной теории математической предметной области: выявляются первичные пре- дикаты и функции (включая операторы), даются определения «вторичных» предикатов и функций. Формулируются аксиомы и теоремы, последние доказываются. Важным оператором данной предметной обла- сти является VPC (Volume Percentage Content) - оператор объёмного процентного содержания ве- щества в твёрдом теле. Получая на вход предикат вещества (обычно минерала) он возвращает функ- цию, которая в свою очередь возвращает "на твёр- дом теле" число - объёмное процентное содержание вещества в данном теле. Так VPC(Ol)(sb1) возвра- щает значение объёмного процентного содержания оливина у образца горной породы, которому соот- ветствует переменная sb1. Как пример аксиомы предметной области рас- смотрим аксиому ограничения на значения величи- ны процента. Используя квантор по предикату можно записать единую аксиому формулой второго порядка: ∀p:(SB:TV) ∀x:SB Substance(p) → (0 ≤ VPC(p)(x) ≤ 100) В ней, TV - сорт истинностных значений, состо- ящий из True, False. p:(SB:TV) означает, что p есть функция из SB в TV, т.е. предикат. Substance(p) означает, что p предикат субстанции. Он удовлетво- ряет требованию, что если некое тело состоит из вещества p, то и любая его часть тоже состоит из вещества p. Для формального определения вида горной по- роды необходимы предикаты минералов, которые считаются первичными. Например, для оливина предикат будет обозначаться Ol и если Ol(sb2) рав- но True, то образец которому соответствует пере- менная sb2 целиком состоит из оливина. Состав минералов необходимых для реализованной части алгоритма следующий: melilite, kalsilite, leucite, Ol (оливин), hornblende, garnet, spinel, biotite. Кроме того нужны также группы минералов Opx, Cpx, Q, A, P, F, M (см. [3] стр. 4, [4] стр. 6). Непосредственно при формализации такие группы оказываются операторами – предикатами от предикатов. Так M(muscovite)=true, означает, что предикат muscovite относится к группе M. Вместо введения такого «предиката от предикатов» вводит- ся предикат от твёрдого тела для которого верна теорема позволяющая использовать его при опре- делении вида горной породы. Формальное опреде- ление такого предиката получается из определения данного в [3], [4] и при необходимости консульта- ций с геологами. Так следуя прямому указанию в [4] стр. 6: "M = mafic and related minerals, that is all other minerals apart from QAPF; this includes all micas (in- cluding muscovite), amphibole, pyroxene, olivine, opaque minerals, accessory minerals (zircon, apatite,
  • 2.
    2 titanite etc.), epidote,allanite, garnet, melilite, monti- cellite, wollastonite, primary carbonate, etc" получаем: M(sb1:SB) ≝ not(Q(sb1) or A(sb1) or P(sb1) or F(sb1)). Можно доказать следующую теорему: ∀sb1:SB VPC(M)(sb1) = 100 - (VPC(Q)(sb1) +VPC(A)(sb1)+VPC(P)(sb1)+VPC(F)(sb1)). Определения играют фундаментальную роль при построении формальной теории предметной области. Нам понадобятся следующие «вторичные» предикаты для характеристики образца: pyroclastic, kimberlite, lamproite, lamprophyre, charnockite, plutonic, volcanic. Эти предикаты качественной ха- рактеристики образца имеют содержательные опре- деления из которых формализовано pyroclastic: pyroclastic(x:SB) ≝ clastic(x) and (∀ y:SB clast(y) and (y part_of x) → volcanic_eruption_result(y)) Здесь применена обычная инфиксная форма за- писи бинарных предикатов и функций: (y part_of x) есть тоже самое что и part_of(y,x). Рассмотрим какие DL-операции нужны для за- писи формулы предиката pyroclastic и какие допол- нительные предикаты нужны для OWL2. Формула part_of(x,y) and clast(x) эквивалентна part_of(x,y) and id(clast)(x,y) и далее (part_of ∩id(clast))(x,y). И мы получаем pyroclastic ≡ clastic and ∀(part_of∩id(clast))- .volcanic_eruption_result И окончательно в DL: pyroclastic ≡ clastic and ∀(part_of- ∩id(clast)) .volcanic_eruption_result В OWL 2 нет операций: r1∩r2, id(c), поэтому вводим в DL определение clast_part_of(x,y) ≝ part_of(x,y) and clast(x) (1) Или clast_part_of ≡ part_of∩id(clast) Считая clast_part_of первичным в OWL 2 полу- чаем: pyroclastic ≡ clastic and ∀clast_part_of- .volcanic_eruption_result Ясно что из (1) следует: clast_part_of ⊑ part_of и ∃clast_part_of.⊤ ⊑ clast Эти OWL2-аксиомы следует добавить в теорию (OWL2-онтологию) как ослабление/вместо (1). Для группировки минералов «карбонаты» пет- рологи предложили следующую формулу: carbonates(sb1:SB) ≝ calcite(sb1) or dolomite(sb1) or magnesite(sb1) or siderite(sb1) or ankerite(sb1) or aragonite(sb1) or vaterite(sb1) or strontianite(sb1). Может быть доказана следующая теорема: ∀sb1:SB VPC(carbonates)(sb1) = VPC(calcite)(sb1) + VPC(dolomite)(sb1) + VPC(magnesite)(sb1) + VPC(siderite)(sb1) + VPC(ankerite)(sb1) + VPC(aragonite)(sb1) + VPC(vaterite)(sb1) + VPC(strontianite)(sb1). Нам понадобятся дополнительные определения, которые есть у геологов в неявной форме. Так определения вспомогательных предикатов OOC, OPH понадобятся для формализации диаграмм классификации ультрамафических горных пород по минеральному составу [3], Fig. 2.9. p. 28, (см. Рис. 1). OOC(sb1:SB) ≝ Ol(sb1) or Opx(sb1) or Cpx(sb1). OPH(sb1:SB) ≝ Ol(sb1) or Px(sb1) or horn- blende(sb1). Рис. 1 Модальная классификация горных пород Алгоритм классификации. Алгоритм задан со- вокупностью блок-схем. Блок-схема есть специаль- ный вид правой части определения функции. В уз- лах блок-схемы либо действие, либо условие. У блок-схемы могут существовать собственные (внутренние) переменные, задаваемые «квантором» Var. В блок-схемах употребляется операция “+” - конкатенация, соединение двух строк. Значок «∘» в формулах условий обозначает применение унарно- го оператора к предикату. Обозначим формулу возвращающую строку <терм>. В блок-схемах используются следующие действия: return <терм>. Значение терма становится значе- нием функции; abort <строка>. Выполнение алгоритма заверша- ется аварийно и выдаётся сообщение; <переменная>:=<терм>. Внутренней перемен- ной блок схемы присваивается значение терма. Алгоритм верхнего уровня задан классифици- рующей функцией rock_type. Именно эту функцию надо вызывать, чтобы классифицировать образец. Исходный текст для алгоритма находится на стр.6 первоисточника (см. также [4]).
  • 3.
    3 Рис. 2 –Блок-схема rock_type Далее для каждой порции исходного текста да- ётся формальное условие перехода к соответству- ющей секции: "(1) if the rock is considered to be of pyroclastic origin go to section 2.2 “Pyroclastic Rocks and Tephra” on p.7" - pyroclastic(sb1); "(2) if the rock contains > 50% of modal carbonate rocks go to section 2.3 “Carbonatites” on p.10" - VPC(carbonates)(sb1)>50; "(3) if the rock contains > 10% of modal melilite go to section 2.4 “Melilite-bearing Rocks” on p.11" - VPC(melilite)(sb1)>10; "(4) if the rock contains modal kalsilite go to sec- tion 2.5 “Kalsilite-bearing Rocks” on p.12" - VPC(kalsilite)(sb1)>0; "(5) check to see if the rock is a kimberlite as de- scribed in section 2.6 on p.13" - kimberlite(sb1); "(6) check to see if the rock is a lamproite as de- scribed in section 2.7 on p.16" - lamproite(sb1); "(7) if the rock contains modal leucite go to section 2.8 “Leucite-bearing Rocks” on p.18" - VPC(leucite)(sb1)>0; "(8) check to see if the rock is a lamprophyre as de- scribed in section 2.9 on p.19. Note ..." - lampro- phyre(sb1); "(9) check to see if the rock is a charnockite as de- scribed in section 2.10 on p.20" - charnockite(sb1); "(10) if the rock is plutonic, as defined in section 2.1, go to section 2.11 “Plutonic rocks” on p.21" - plu- tonic(sb1) "(11) if the rock is volcanic, as defined in section 2.1, go to section 2.12 “Volcanic rocks” on p.30" - vol- canic(sb1); "(12)If you get to this point, either the rock is not igneous or you have made a mistake." - abort("either the rock is not igneous or you have made a mistake"). Определение функции rock_type использует блок- схему: rock_type(sb1:SB):String ≝<блок-схема Рис. 2>. Вполне возможно, что, когда будут даны опре- деления для предикатов условий приведённых вы- ше окажется, что их объединение будет всегда вер- но. И наоборот - если это не так, то всегда найдётся (теоретически) сочетание характеристик образца магматической породы, которое приведёт к abort. Одноместные предикаты, использованные в формулах, будем называть предикатами верхнего уровня. Четыре формулы основаны на модальном минеральном составе образца (они начинаются с VPC). Определения предикатов верхнего уровня ещё не даны. Но предполагается, что они есть. Большинство предикатов непосредственно упо- требляются в тексте первоисточника и так как сам текст написан в стиле алгоритма его формализация выполнена "один к одному". Но в двух случаях пришлось сделать предположения, подтверждённые петрологами. Случай 6-1. Текст: "(1) if the rock is considered to be of pyroclastic origin go to section 2.2 “Pyroclastic Rocks and Tephra” on p.7". Чтобы не вводить преди- кат "pyroclastic_origin" предположим, что Tephra является pyroclastic. Тогда критерий перехода к ал- горитму секции 2.2 выглядит так: pyroclastic(sb1). Петрологи подтвердили предположение. Случай 6-2. Текст: "(7) if the rock contains modal leucite go to section 2.8 “Leucite-bearing Rocks” on p.18". Теоретически "contains" может означать "зна- чительное количество" (например >5%) было сде- лано предположение что "contains" означает ">0". Тогда критерий перехода к алгоритму секции 2.8 выглядит так: VPC(leucite)(sb1)>0. Петрологи под- твердили и это предположение. Функция ultramafic_rock_type. Её алгоритм написан на основе текста параграфа 2.11.2 "ULTRAMAFIC ROCKS (M > 90%)", стр.28-29 (см. [3] или [4]). Каждая из диаграмм (см. Рис. 1), применяющих- ся для классификации ультрамафических пород, реализована в виде отдельной классифицирующей функции, которая фактически возвращает наимено- вание зоны треугольника исходя из характеристик образца. Для верхнего треугольника функция названа OOC_diagram_field, для нижнего - OPH_diagram_field. На стр.28 [3] имеем: "The Subcommission (Streckeisen, 1973, 1976) recommended two diagrams, both of which are shown in Fig. 2.9. One for the rocks consisting essentially of olivine, orthopyroxene, and clinopyroxene, and the other for rocks containing hornblende, pyroxenes, and olivine."; соответственно как критерий выбора между диаграммами взято наличие или отсутствие в образце минерала horn-
  • 4.
    4 blende: VPC(hornblende)(sb1) = 0- для верхней диа- граммы, VPC(hornblende)(sb1) > 0 - для нижней. Дадим определение функции ultramafic_rock_type: ultramafic_rock_type(sb1:SB) :String ≝ Var root_name, q_name, q_garnet, q_spinel:String <Блок-схема Рис. 3>. Рис. 3 – Блок-схема ultramafic_rock_type Основную часть функции ultramafic_rock_type, составляют инструкции по добавлению квалифика- ционного имени к имени породы в случае, когда образец содержит garnet или spinel: "Ultramafic rocks containing garnet or spinel should be qualified in the following manner. If garnet or spinel is less than 5% use garnet-bearing peridotite, chromite-bearing dunite etc. If garnet or spinel is greater than 5% use garnet peridotite, chromite dunite etc." (p.29 [3]). Квалификация для garnet и spinel определяется независимо. При присутствии в образце обоих ми- нералов порядок слов квалификации в термине - по возрастающей концентраций. Критерий "входа" в квалификацию: VPC(garnet)(sb1) + VPC(spinel)(sb1) > 0 Далее указаны критерии квалификации и соот- ветствующее добавляемое имя. Таблица 1. Квалификационное имя критерий имя (VPC(garnet)(sb1)>0) and (VPC(garnet)(sb1) < 5) garnet-bearing_ (VPC(garnet)(sb1) ≥ 5) garnet_ (0<VPC(spinel)(sb1)) and (VPC(spinel)(sb1) < 5) chromite-bearing_ (VPC(spinel)(sb1) ≥ 5) chromite_ Классифицирующие функции ultramafic диа- грамм. Две диаграммы Fig.2.9 [3] p.28 (см. также [4]) (см. Рис 1) формализованы в виде функций: OOC_diagram_field (верхний треугольник), OPH_diagram_field (нижний треугольник). Формализация диаграмм требует некоторых уточнений: - вычисления координат точек пересечения не- которых линий. Так линии внутреннего треуголь- ника имеют значение 5, т.к. в его вершинах это зна- чение взятое дважды плюс 90 должно дать 100. - решения какой из именованных зон диаграммы принадлежит граничная линия ("граница"). Алгоритм классифицирующей функции диа- граммы намеренно выполнен как "цепочка" if-узлов каждый из которых "отвечает" за одну конкретную именованную зону диаграммы. Каждое условие представляет собой систему линейных неравенств. Совокупность таких условий обладает важными математическими свойствами: - каждые два условия не совместны, т.к. соот- ветствующие им зоны не пересекаются; - объединение всех условий вместе даёт нера- венства для треугольника, т.к. условия "накрывают" весь треугольник. Описанные свойства могут быть проверены "ав- томатически", если определения "загрузить" в ма- шину вывода (МВ), работающую с линейными не- равенствами. И такие МВ есть (например, Racer), т.к. запись линейных неравенств возможна исполь- зуя расширение OWL 2 - Data Range Extension: Lin- ear Equations. Блок-схема OOC_diagram_field (верхний тре- угольник). Дадим определение функции OOC_diagram_field: OOC_diagram_field(sb1:SB):String ≝ <Блок-схема Рис. 4> Блок-схема OPH_diagram_field (нижний тре- угольник) приведена в отчёте [5].
  • 5.
    5 Рис. 4 –Блок-схема OOC_diagram_field Формальное определение горной породы. Алго- ритм классификации содержит в неявном виде определения всех видов магматических горных по- род. Из него можно получить определения в виде формул, которые оказываются формулами с одной свободной переменной исчисления предикатов пер- вого порядка с числами. Сама формула того или иного вида говорит о "сложности" понятия, стояще- го за термином, а также указывает все понятия на которые опирается данное. Что чрезвычайно важно для поиска первичных понятий. Далее описано получение из алгоритма форму- лы для harzburgite, получение формулы для dunite есть в отчёте [5]. Определим вспомогательный предикат: nf9(sb1:SB) ≝ not pyroclastic(sb1) and not VPC(carbonates)(sb1)>50 and not VPC(melilite)(sb1)>10 and not VPC(kalsilite)(sb1)>0 and not kimberlite(sb1) and not lamproite(sb1) and not VPC(leucite)(sb1)>0 and not lamprophyre(sb1) and not charnockite(sb1) который верен в том случае, если образец не удовлетворяет первым 9-ти условиям верхнего уровня блок-схемы rock_type. Преобразовав форму- лу получим: nf9(sb1:SB) ≝ not (pyroclastic(sb1) or kimberlite(sb1) or lamproite(sb1) or lamprophyre(sb1) or charnock- ite(sb1)) and VPC(carbonates)(sb1)≤50 and VPC(melilite)(sb1)≤10 and VPC(kalsilite)(sb1)=0 and VPC(leucite)(sb1)=0 harzburgite. Получим определение предиката породы harzburgite. Предикат harzburgite будучи применён к элементу сорта SB должен давать true если образец является harzburgite, а в противном случае - false. Чтобы получить предикат надо прой- ти по блок-схемам сверху вниз и собрать условия, приводящие к узлу на блок-схеме OOC_diagram_field выдающему значение «harzburgite». Эти условия надо соединить логиче- ской операцией «and». Получится формула: nf9(sb1) and plutonic(sb1) and VPC(M)(sb1) ≥ 90 and VPC(hornblende)(sb1)=0 and (0.4*VPC(OOC)(sb1) ≤ VPC(Ol)(sb1)) and (VPC(Ol)(sb1) ≤ 0.9*VPC(OOC)(sb1)) and (0 ≤ VPC(Cpx)(sb1)) and (VPC(Cpx)(sb1) < 0.05*VPC(OOC)(sb1)) Подставив формулу nf9 и перегруппировав and- члены получим искомое определение: harzburgite(sb1:SB) ≝ plutonic(sb1) and not (pyroclastic(sb1) or kimber- lite(sb1) or lamproite(sb1) or lamprophyre(sb1) or charnockite(sb1)) and VPC(carbonates)(sb1)≤50 and VPC(melilite)(sb1)≤10 and VPC(M)(sb1) ≥ 90 and VPC(kalsilite)(sb1)=0 and VPC(leucite)(sb1)=0 and VPC(hornblende)(sb1)=0 and 0.4*VPC(OOC)(sb1)≤VPC(Ol)(sb1)≤0.9*VPC(OOC)( sb1) and VPC(Cpx)(sb1)<0.05*VPC(OOC)(sb1). Таким образом, точное определение вида магма- тической горной породы harzburgite состоит из трёх частей: 1. качественные характеристики; 2. абсолютные ограничения на модальный со- став; 3. относительные ограничения на модальный состав. ВЫВОДЫ. Создание алгоритма потребовало уточнения текста [3], т.е. текст содержит недоста- точно информации и приходится делать предполо-
  • 6.
    6 жения, которые конечнодолжны быть подтвержде- ны. В идеале блок-схемы и определения функций должны стать частью документа [3]. Важным результатом алгоритмизации является выявление первичных предикатов и функций, кото- рые используются в определениях других, именно они будут "символами теории" при построении формальной теории для Петрологии. Получено формальное определение вида кон- кретной магматической горной породы, которое оказалось системой линейных неравенств с одной переменной. Для них существуют эффективные машины вы- вода. Что даёт возможность применять формулы для автоматической классификации образцов, а также анализировать всю совокупность определе- ний математическими методами. Развиваемый подход укладывается в рамки направления описанного в [6]. Авторы выражают благодарность Dr. Stephen M. Richard из Arizona Geological Survey за консульта- ции по петрологии и Dr. Pavel Klinov из University of Ulm за консультации по Description Logics. ЛИТЕРАТУРА 1. F. Baader, D. Calvanese, D. L. McGuinness, D. Nardi and P. F. Patel-Schneider (eds.) The Description Logic Handbook: Theory, Implementation, and Appli- cations. 2nd Edition. Cambridge University Press, 2010. 2. P. Hitzler, M. Kroetzsch, B. Parsia, P. F. Patel- Schneider, S. Rudolph (eds.) OWL 2 Web Ontology Language: Primer. W3C Recommendation, 2009. 3. Le Maitre, L.E., ed. 2002. Igneous Rocks: A Cla- ssification and Glossary of Terms 2nd edition, Cam- bridge. 4. Gillespie, M R, and Styles, M T. 1999. BGS Rock Classification Scheme, Volume 1, Classification of igneous rocks. British Geological Survey Research Report, (2nd edition), RR 99–06. 5. А.В. Шкотин, В.М. Ряховский, Д.И. Кудрявцев. Алгоритм классификации магматических горных пород и формальное определение вида горной по- роды (Версия 2) Исследовательский отчёт. ГГМ РАН, 2014. 6. Ernest Davis, Representations of commonsense knowledge, Morgan Kaufmann, 1990. A CLASSIFICATION ALGORITHM-BASED FORMAL ROCK TYPE DEFINITION A.V. Shkotin, V.M. Riakhovsky, D.I. Kudryavtsev Vernadsky State Geological Museum, Russian Academy of Sciences, 2014 г. 11 Mokhovaya Street, Building 11, Moscow 125009, Russia E-mail: ashkotin@acm.org The work presents the results of a study where a many-sorted second-order predicate calculus language permitting operators (functions of predicates) and predicate quantifiers is selected as the knowledge representation language. Such language enables recording the knowledge of the application area in a compact and vivid form. The work also (partially) presents a rock sample classification algorithm and shows how to extract a formal rock definition from this algorithm. The result is a precise mathematical formula of a particular rock (harzburgite) definition, which is equivalent to the informal definition used by geologists. A specific classifier (of rocks) was actually used to show how the totality of formal definitions of its component terms can be obtained. Кey words: petrology, formal definition, classification algorithm, formal theory. REFERENCES 1. F. Baader, D. Calvanese, D. L. McGuinness, D. Nardi and P. F. Patel-Schneider (eds.) The Description Logic Handbook: Theory, Implementation, and Appli- cations. 2nd Edition. Cambridge University Press, 2010. 2. P. Hitzler, M. Kroetzsch, B. Parsia, P. F. Patel- Schneider, S. Rudolph (eds.) OWL 2 Web Ontology Language: Primer. W3C Recommendation, 2009. 3. Le Maitre, L.E., ed. 2002. Igneous Rocks: A Cla- ssification and Glossary of Terms 2nd edition, Cam- bridge. 4. Gillespie, M R, and Styles, M T. 1999. BGS Rock Classification Scheme, Volume 1, Classification of igneous rocks. British Geological Survey Research Report, (2nd edition), RR 99–06. 5. A.V. Shkotin, V.M. Riakhovsky, D.I. Kudryavtsev. Classification algorithm of igneous rocks and the for- mal definition of the type of rock (Version 2) Research report. SGM RAS, 2014. 6. Ernest Davis, Representations of commonsense knowledge, Morgan Kaufmann, 1990.