Графическая база данных и ее экосистема технологий могут дать элегантные, эффективные решения проблем в представлении и обосновании знаний . Чтобы почувствовать вкус этого аргумента, мы должны сначала понять, что такое граф. График — это структура данных. Существует множество типов структур данных графа, но для целей этого поста мы сосредоточимся на типе, который стал известен как граф свойств . Граф свойств обозначает вершины (узлы, точки) и ребра (дуги, линии). Края в графе свойств направлены и помечены / напечатаны (например, «Марко знает Петра»). Как вершины, так и ребра (обычно известные как элементы) могут иметь любое количество пар ключ / значение, связанных с ними. Эти пары ключ / значение называются свойствами. Из этой фундаментальной структуры можно ответить на ряд вопросов и решить проблемы.
Моделирование объектов
Структура данных графа свойств практически идентична по форме графам объектов объектно-ориентированного программирования. Возьмите коллекцию объектов, удалите их методы, и у вас останется граф свойств. Поля объекта являются либо примитивными, и в каких случаях они служат свойствами, либо они сложны, а в каких случаях служат ссылками на другие объекты. Например, в Java:
1
2
3
4
5
|
class Person { String name; Integer age; Collection<Person> knows; } |
Свойства name и age — это свойства вершин конкретного экземпляра лица, а свойство know относится к знаком с метками для других людей. Эмиль Эйфрем из Neo Technology придерживается мнения, что графы свойств «удобны для доски», так как они соответствуют семантике современных объектно-ориентированных языков и методам построения диаграмм, используемым разработчиками. Свидетельством этой идеи является проект jo4neo Тейлора Коуэна . В jo4neo элегантно используются аннотации Java, чтобы обеспечить поддержку графов объектов Java базой данных графов Neo4j . Помимо технологических преимуществ, человеческий разум склонен мыслить с точки зрения объектов и их отношений. Таким образом, графики также можно считать «дружественными для человеческого мозга».
Учитывая граф объекта, можно ответить на вопросы о домене. В DSL обхода графа, известном как Gremlin , мы можем задавать вопросы о графе объектов:
01
02
03
04
05
06
07
08
09
10
11
|
// Who does Marko know? marko.outE( 'knows' ).inV // What are the names of the people that Marko knows? marko.outE( 'knows' ).inV.name // What are the names and ages of the people that Marko knows? marko.outE( 'knows' ).inV.emit{[it.name, it.age]} // Who does Marko know that are 30+ years old? marko.outE( 'knows' ).inV{it.age > 30 } |
Концептуальное моделирование
Из примеров, составляющих модель, могут существовать абстрактные понятия. Например, хотя могут быть экземпляры книг, также могут быть категории, к которым относятся эти книги — например, научная фантастика, техника, романтика и т. Д. График представляет собой гибкую структуру, которая позволяет выразить, что что-то связано с чем-то иначе каким-то образом. Эти вещи могут быть реальными или эфирными. Таким образом, онтологические концепции могут быть представлены вместе с их примерами и соответствующим образом запрашиваться для ответа на вопросы.
1
2
3
4
5
6
7
8
|
// What are the parent categories of history? x = []; history.inE( 'subCategory' ).outV.aggregate(x).loop( 3 ){!it.equals(literature)}; x // How many descendant categories does fiction have? c = 0 ; fiction.outE( 'subCategory' ).inV.foreach{c++}.loop( 3 ){ true }; c // Is romance at the same depth as history? c = 0 ; romance.inE( 'subCategory' ).outV.loop( 2 ){c++; !it.equals(literature)}.outE( 'subCategory' ).inV.loop( 2 ){c--; !it.equals(history)}; c == 0 |
Автоматизированное рассуждение
От явных объектов, их отношений и их абстрактных категорий могут быть осуществлены процессы рассуждения. Напряжение, которое существует при моделировании графа, состоит в том, что нужно сделать явным (структура) и что вывести через обход (процесс). Компромисс между, как и большей частью вычислений, пространством и временем. Если существует какое-то преимущество от человека до его соавторов, то это единственная надежда получить от этого человека его или ее соавторов. Если, с другой стороны, соавторы должны быть выведены через общие записи, то для определения соавторов вычисляется шаг с несколькими скачками. Рассуждение — это процесс явного неявного выражения. Несколько простых примеров рассуждений представлены ниже с использованием Gremlin.
1
2
3
4
5
6
|
// Two people who wrote the same book/article/etc. are coauthors g.V{x = it}.outE( 'wrote' ).inV.inE( 'wrote' ).outV.except([x])[ 0 ].foreach{g.addEdge( null , x, it, 'hasCoauthor' )} // People who write literature are authors author = g.addVertex(); author.type= 'role' ; author.name= 'author' g.V.foreach{it.outE( 'wrote' ).inV[ 0 ].foreach{g.addEdge( null , it, author, 'hasRole' )} >> - 1 } |
В приведенных выше примерах вычисляется полный анализ графа для определения всех соавторов и ролей авторов. Однако ничто не мешает оценке алгоритмов локального вывода.
1
2
|
// Marko's coauthors are those people who wrote the same books/articles/etc. as him marko.outE( 'wrote' ).inV.inE( 'wrote' ).outV.except([marko])[ 0 ].foreach{g.addEdge( null , x, it, 'hasCoauthor' )} |
Вывод
Графики полезны для моделирования объектов, их отношений друг с другом и концептуальных структур, в которых они лежат. Из этой явной информации можно оценить алгоритмы запроса и вывода графа, чтобы ответить на вопросы на графе и увеличить плотность явных знаний, содержащихся в графе (т. Е. Увеличить количество вершин и ребер). Этот конкретный шаблон использования графов в значительной степени использовался в мире RDF (представление знаний) и RDFS / OWL (обоснование). Мир RDF / RDFS / OWL ограничен в основном логикой описания (см. Здесь аргумент об обратном). Логика описания — это всего лишь одна часть более широкой области представления и обоснования знаний. Есть множество логик, которыми можно воспользоваться. В появляющемся пространстве графовых баз данных существуют необходимые строительные блоки для поддержки использования других логик. Более того, эти логики в некоторых случаях могут использоваться одновременно в одной и той же графической структуре. К этому моменту приведенный ниже список литературы содержит коллекцию книг, в которых изложены различные логики и идеи, касающиеся разнородных рассуждений. Графовые базы данных обеспечивают зеленое поле, с помощью которого эти идеи могут быть реализованы.
Дальнейшее чтение
- Брахман Р., Левеск, Х. « Представление знаний и рассуждения », Морган Кауфманн, 2004.
- Ван П. « Жесткая гибкость: логика интеллекта », Springer, 2006.
- Мюллер, ET, « Здравый смысл », Морган Кауфманн, 2006.
- Минский М., « Общество разума », Simon & Schuster, 1988.
Ссылка: | Представление знаний и обоснование с помощью баз данных графиков от нашего партнера по JCG Марко Родригеса в блоге Марко А. Родригеса . |