Мне нужна графическая база данных с 4 столбцами (предикат предметного предиката, объектный вес), в которую я могу импортировать файлы .ttl.
Я использовал Virtuoso до сих пор, но он не поддерживает помеченные/взвешенные края.
Другим вариантом является Neo4j, но он не поддерживает триплеты RDF из коробки (тройки должны быть преобразованы в формат CSV перед загрузкой).
Это простое требование, но я не смог найти ничего, кроме R2DF, но этот AFAIK недоступен или все еще является концепцией.
Пример строки из .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 .
Ваш пример 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 (так что вы можете переключать реализацию базы данных без изменения вашего кода) .
Николя Рауль
Вулкан
ретрография
Вулкан