База данных взвешенных графов с поддержкой RDF

Мне нужна графическая база данных с 4 столбцами (предикат предметного предиката, объектный вес), в которую я могу импортировать файлы .ttl.

Я использовал Virtuoso до сих пор, но он не поддерживает помеченные/взвешенные края.

Другим вариантом является Neo4j, но он не поддерживает триплеты RDF из коробки (тройки должны быть преобразованы в формат CSV перед загрузкой).

Это простое требование, но я не смог найти ничего, кроме R2DF, но этот AFAIK недоступен или все еще является концепцией.

Требования:

  • Платформа: Linux CentOS
  • Бесплатно, по крайней мере, для использования в образовании
  • Поддержка тройного RDF (.ttl)
  • на основе графика
  • Обработка больших наборов данных (примерно 5 миллионов строк или около того)

Пример:

Пример строки из .ttl:

<http://dbpedia.org/resource/Category:Futurama> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2004/02/skos/core#Concept> 8.0 .
Как метки/веса описаны в вашем RDF? Овеществление? Пожалуйста, опубликуйте образец .ttl, спасибо!
Я буду добавлять веса на более поздних этапах.
Вы пробовали Аллегро? franz.com/agraph/аллегрограф
@retrography Я не смог найти концепцию взвешенных/помеченных ребер в Allegro. Я думаю, вы имели в виду, как в нем обрабатываются запросы диапазона? Я думаю, что это может сделать.

Ответы (1)

Ваш пример Turtle на самом деле синтаксически недействителен, потому что Turtle - это формат «только для троек», поэтому вы не найдете никакого инструмента, который может анализировать/обрабатывать это. Понятие взвешенных ребер выводит вас за рамки стандартов RDF, поэтому вы не найдете много инструментов RDF, предлагающих его явную поддержку.

Однако вы можете добиться желаемого с помощью большинства стандартных инструментов RDF, если захотите немного изменить свои данные. В этом примере я буду использовать RDF4J .

Для моделирования весов ребер вы можете использовать понятие «именованных графов», которое в RDF4J поддерживается за счет использования четырехугольников вместо троек. Используя, например, N-Quads в качестве формата (очень похожего на Turtle/N-Triples, но допускающего дополнительную необходимую информацию об именованном графе), ваш пример может выглядеть следующим образом:

<http://dbpedia.org/resource/Category:Futurama> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2004/02/skos/core#Concept> <http://example.org/weight-8-0> .
<http://example.org/weight-8-0> rdfs:label 8.0 .

Как видите, идея состоит в том, чтобы определить новый именованный граф (обозначенный http://example.org/weight-8-0в этом примере) и использовать его в качестве идентификатора графа для утверждения, которому вы хотите присвоить вес. Второй оператор предназначен просто для привязки фактического значения веса к идентификатору.

Конечно, этот подход означает, что вы вводите новый оператор RDF для каждого возможного значения веса, поэтому он действительно работает только при наличии некоторого управляемого количества возможных значений. Опять же, вы говорите о 5 миллионах утверждений в вашем наборе данных, поэтому в худшем случае вы удвоите это количество до 10 миллионов утверждений, что по-прежнему легко обрабатывается большинством баз данных RDF.

Используя этот подход, Eclipse RDF4J (ранее известный как OpenRDF Sesame) является хорошей структурой для использования. Он имеет открытый исходный код (лицензия на распространение Eclipse), не зависит от платформы (Java), поддерживает синтаксис Turtle, а также синтаксис N-Quads и TriG (и большинство других форматов синтаксиса RDF), а также полную поддержку SPARQL 1.1, а также всеобъемлющий API Java . . Его собственные базы данных могут обрабатывать до порядка 100 миллионов операторов, и если вы хотите масштабироваться больше, существует множество поставщиков масштабируемых баз данных RDF, которые полностью совместимы с RDF4J (так что вы можете переключать реализацию базы данных без изменения вашего кода) .

Спасибо за ответ. На данный момент я приостановил этот проект (из-за многих проблем и трудностей). Вернусь, чтобы проверить ваш ответ, когда я возобновлю работу над своим проектом. Очень скоро.