Ответ 1
Основное различие между базами данных графов и тройными магазинами заключается в том, как они моделируют график. В тройном хранилище (или квадранте) данные имеют тенденцию быть очень атомарными. Я имею в виду, что "узлы" в графе имеют тенденцию быть примитивными типами данных, такими как string, integer, date и т.д. Связи связывают примитивы вместе, и поэтому "единица дискурса" в тройном магазине является тройной, а не a node или отношения, как правило.
В отличие от этого другие базы данных графов часто называют "хранилищами свойств", поскольку узлы представляют собой контейнеры данных, которые соответствуют объектам в домене. A node выступает за объект и имеет свойства; они действуют как богатые типы данных, заданные графическими модельерами, а не только примитивные типы данных. В этих графовых базах данных узлы и отношения являются "единицей дискурса".
Скажем, у меня есть человек по имени "Боб", который знает "Сьюзан". В RDF это будет примерно так:
<http://example.org/person/1> :hasName "Bob".
<http://example.org/person/1> foaf:knows <http://example.org/person/2>.
<http://example.org/person/2> :hasName "Susan".
В такой базе данных, как neo4j, это будет следующим:
(a:Person {name: "Bob"})-[:KNOWS]->(b:Person {name: "Susan"})
Обратите внимание, что в RDF это 3 отношения, но только одно из этих отношений фактически выражает семантику между двумя объектами. Другие два отношения - это просто отслеживание свойств одного объекта более высокого уровня (человека). В neo4j это отношение 1 между двумя узлами, причем каждый node имеет свойство. В RDF вы будете склонны идентифицировать вещи по URI, в neo4j это объект базы данных, который автоматически получает идентификатор базы данных. Это то, что я имею в виду о различии между более атомарным/примитивным хранилищем (тройными хранилищами) и более богатым графиком свойств.
RDF и тройные магазины в основном построены для тех архитектурных задач, с которыми вы столкнулись с семантической сетью. Например, пространство имен XML встроено в архитектурное предположение, что вы будете смешивать и сопоставлять использование многих разных словарей и пространств имен. (Это право есть очень "семантическая паутина" ). Таким образом, в SPARQL и RDF вы обычно обычно используете пространства имен xsd
, rdf
и rdfs
и, возможно, также owl
, skos
и многие другие. SPARQL и RDF/RDFS также имеют множество перехватов и функций, которые явно позволяют сделать такие вещи, как онтологический вывод. Вы будете склонны идентифицировать вещи с URI как способ "namespacing your identifier", а также потому, что некоторые люди могут захотеть удалить ссылку на URI... опять же предположение представляет собой широкое разделение данных между многими участниками.
Хранилища свойств по контрасту привязаны к различным вариантам использования, например гибкому моделированию данных в пределах одной модели/пространства имен, сопоставлениям между объектами и графиками для сохранения корпоративных приложений, быстрой эволюционируемости и т.д. Вы будете склонны идентифицировать вещи с помощью своей собственной схемы (или внутреннего идентификатора базы данных). Целое число с автоматическим добавлением может быть не лучшей формой идентификатора для любого случайного потребителя в Интернете (и они, конечно же, не могут быть удалены как URL-адреса), но они могут не быть вашей первой мыслью для внутреннего приложения компании.
Итак, что лучше? Чем больше атомного трехмерного хранилища, или графа свойств? Нужно ли смешивать и сопоставлять много разных словарей в одном запросе или модели данных? Вам нужно создать онтологию OWL или сделать вывод? Нужно ли сериализовать кучу java-объектов в памяти в базу данных? Вам нужно быстро пройтись по длинным дорожкам? Эти типы вопросов будут определять ваш выбор.
Графы - это графики, оба из них - графики, и поэтому я не думаю, что существует много различий в терминах того, что они могут представлять, или как вы думаете о проблеме в терминах графика. Различия сводятся к архитектуре под капотом, и какие варианты использования вы считаете нужными вам. Я не скажу вам, что один лучше другого, но разумно выбирайте.