Как загрузить rdf-файл в GraphDB через API

У меня на сервере хранится RDF-файл. Файл или, по крайней мере, его содержимое следует загрузить на удаленный GrapbDB через API.

В документации есть два способа сделать это. Первый загружает его в файлы сервера, а затем загружает в GraphDB. Здесь проблема в том, что я не являюсь владельцем сервера, GraphDB работает. Поэтому я не могу загрузить его в файлы сервера. Или, может быть, для этого есть другой API?

Другой способ - предоставить общедоступный API на моем сервере, а затем запустить GraphDB для загрузки файла с моего сервера. Но мой API должен быть защищен кредитами или JWT. Но я не знаю, как установить кредитные данные в API-Call.

Нет возможности загрузить простой график в репозиторий?


person Gigalodon    schedule 03.09.2020    source источник


Ответы (1)


В GraphDB есть пользовательский интерфейс на основе браузера, который позволяет импорт из локальных файлов. Если это разрешено на сервере, к которому вы подключаетесь, и вам нужно сделать это только один раз, я думаю, что это будет самый быстрый путь.

Если вы хотите загрузить локальный файл в GraphDB с помощью dotNetRDF, я бы посоветовал вам использовать API протокола хранилища графов SPARQL 1.1 через VDS.RDF.Storage.SparqlHttpProtocolConnector as описано здесь. Базовый URL-адрес, который вам нужно использовать, будет зависеть от конфигурации сервера и, возможно, также от версии GraphDB, на которой он работает, но для последней версии (9.4) шаблон следующий: <RDF4J_URL>/repositories/<repo_id>/rdf-graphs/service

Коннектор поддерживает базовую аутентификацию HTTP (которая является одним из вариантов, предлагаемых GraphDB), поэтому, если у вас есть имя пользователя и пароль, вы можете попробовать метод SetCredentials на соединителе, чтобы указать эти учетные данные и, при необходимости, принудительно использовать базовую аутентификацию HTTP с помощью установка для свойства глобальных опций VDS.RDF.Options.ForceHttpBasicAuth значения true.

person Kal    schedule 03.09.2020
comment
Соединитель может быть решением. Но возвращается, что я несанкционированный. Может быть, это возможно только для менеджеров репозиториев, а не для пользователей? - person Gigalodon; 03.09.2020
comment
Да, это определенно возможно. Коннектор поддерживает базовую аутентификацию HTTP, поэтому, если у вас есть имя пользователя и пароль, вы можете попробовать SetCredentials метод на коннекторе, чтобы указать эти учетные данные и посмотреть, работает ли это. - person Kal; 04.09.2020
comment
Я забыл добавить Options.ForceHttpBasicAuth = true. При работе с графиком по умолчанию он теперь работает. Но при использовании существующего или нового Графика в хранилище не будут добавлены тройки. E. g. con.UpdateGraph (новый Uri (urn: test), g.Triples, null); не работает - person Gigalodon; 07.09.2020
comment
Это немного странно. Согласно документации GraphDB, конечная точка /rdf-graphs/service должна поддерживать обновление графа путем передачи параметра запроса graph, что и делает коннектор. Было бы полезно, если вы включили полную отладку HTTP в dotNetRDF, чтобы вы могли получить вывод трассировки, точно показывающий, каков ответ сервера. См. github.com/dotnetrdf/dotnetrdf/wiki/ для подробности о том, как это сделать. - person Kal; 08.09.2020
comment
Похоже, это проблема с документацией GraphDB 8.8. Согласно документации, вы должны использовать другой URL, чем rdf-graphs / service. Сейчас просто поменял и работает. - person Gigalodon; 11.09.2020
comment
Рад, что это решено. Замечание: вы можете сделать это просто с помощью curl, SparqlHttpProtocolConnector не требуется. - person Vladimir Alexiev; 18.09.2020