GraphDB - запрос Python Sparql, возвращающий: статус http (404)

Я пытаюсь выполнить следующий запрос Sparql

select * where { 
    ?s ?p ?o .
} limit 100 

Он работает хорошо и дает результат, который требуется в http://localhost:7200/sparql, то есть в GraphDB Workbench. Я хотел бы использовать python для выполнения того же запроса, и для этого я создал следующий URL-адрес запроса, щелкнув «Получить URL-адрес текущего запроса» в интерфейсе GraphDB.

http://localhost:7200/sparql?name=&infer=true&sameAs=false&query=select+*+where+%7B+%0A%09%3Fs+%3Fp+%3Fo+.%0A%7D+limit+100+%0A&execute=

Я пробовал писать код Python для этого

 import pycurl
 from StringIO import StringIO
 url="http://localhost:7200/sparql?name=&infer=true&sameAs=false&query=select+*+where+%7B+%0A%09%3Fs+%3Fp+%3Fo+.%0A%7D+limit+100+%0A&execute="
 response_buffer = StringIO()
 curl = pycurl.Curl()
 curl.setopt(curl.URL,url)
 curl.setopt(curl.USERPWD, '%s:%s' % (' ' , ' '))
 curl.setopt(curl.WRITEFUNCTION, response_buffer.write)
 curl.perform()
 curl.close()
 response_value = response_buffer.getvalue()
 print response_value

Однако это возвращает: Ошибка - статус http (404) - Нет сообщения, посмотрите журналы сервера для получения дополнительной информации.

Нужно ли мне делать какие-либо дополнительные настройки для запроса GraphDB в Python. Могу ли я получить руководство о том, как запрашивать GraphDB с помощью Python и Sparql?


person vinay2k2    schedule 03.03.2017    source источник
comment
Оба URL-адреса не совпадают в вашем примере.   -  person UninformedUser    schedule 03.03.2017
comment
Да, это было изменено при вводе здесь ... но изначально оба одинаковые, пока пытались ... Спасибо за комментарий ... отредактировали здесь опечатку ..   -  person vinay2k2    schedule 04.03.2017
comment
Возможно, вы захотите попробовать sparql-wrapper, гораздо приятнее запрашивать GraphDB, чем curl .. .   -  person Paul Brown    schedule 21.06.2017


Ответы (1)


База данных GraphDB предоставляет конечную точку SPARQL для каждого репозитория RDF. Правильный адрес конечной точки SPARQL можно скопировать из интерфейса Workbench: Настройка> Репозитории> значок ссылки рядом с именем репозитория («Копировать URL-адрес репозитория в буфер обмена»).

Ваш HTTP-запрос должен выглядеть так:

http://localhost:7200/repositories/%repositoryID%?name=&infer=true&sameAs=false&query=select+*+where+%7B+%0A%09%3Fs+%3Fp+%3Fo+.%0A%7D+limit+100+%0A&execute=

где значение % repositoryID% - это идентификатор репозитория.

person vassil_momtchev    schedule 04.03.2017