2014-02-10 2 views
1

Я использую sparql-клиент от https://github.com/thomasfr/node-sparql-client. Я хотел знать, есть ли способ получить результаты запроса в формате json, указав некоторые параметры?Получить ответ запроса Sparql в json формате

My endpoint - это репозиторий openrdf-sesame.

В настоящее время мой ответ, как показано ниже:

<?xml version='1.0' encoding='UTF-8'?> 
<sparql xmlns='http://www.w3.org/2005/sparql-results#'> 
..... 
</sparql> 

Я использовал вар г = JSON.stringify (результаты). Но r.results показывают undefined. enter image description here Спасибо!

+0

Вы можете просмотреть исходный код в Интернете; это похоже на то, что большинство из них находится в [client.js] (https://github.com/thomasfr/node-sparql-client/blob/master/lib/client.js). Похоже, что принятый по умолчанию тип ответа уже json (см. Строки 14 и 19). Как результаты запроса возвращаются сейчас? –

+0

Спасибо Joshua, результаты запроса возвращаются в формате xml. – Margi

+0

Интересно. Похоже, что клиент - очень тонкая оболочка, которая просто отправляет запрос на сервер. Если вы _not_ используете client.js, но используете что-то еще (например, веб-интерфейс (имеет ли openrdf-sesame?), Можете ли вы определить способ получения результатов JSON? Если вы можете выяснить, какой параметр изменить (если конечная точка может выдавать результаты JSON), то, вероятно, не будет слишком сложно заставить клиента отправить этот параметр. Конечная точка DBpedia (Virtuoso) позволяет вам помещать '& format = json' в запрос ... –

ответ

2

Ах, как об этом: Согласно this forum thread

Вы [есть] для запроса к серверу напрямую, как в приведенной ниже ссылке.

http://localhost:8080/openrdf-sesame/repositories/memory?query=SELECT+*+WHERE+{‌​?s+?p+?o}&Accept=application/sparql-results%2Bjson 

Конструктор SparqlClient выглядит она принимает два аргумента: конечной точки и некоторые параметры. Похоже, вы должны указать параметр Acceptapplication/sparql-results+json, используя этот аргумент options. Мой ECMAScript немного ржавый, но я думаю, что это будет примерно так:

var endpoint = 'http://example.org/sparql'; 
var client = new SparqlClient(endpoint, {Accept: 'application/sparql-results+json'}); 
+0

Выполнение этого дает мне: «TypeError: Невозможно вызвать метод« apply »undefined. – Margi

+0

Хм ... Как я уже сказал, я не очень разбираюсь в JavaScripter, но [код] (https://github.com/thomasfr/ node-sparql-client/blob/master/lib/client.js) показывает 'options', используемые в [' underscore.extend (requestDefaults, options) '] (https://github.com/thomasfr/node-sparql-client /blob/master/lib/client.js#L66) и [docs для 'extend'] (http: // underscorejs.org/# extend) выглядят так, как будто это правильный формат (хотя, возможно, это должно быть '{" Accept ":" application/... "}' (с цитированным заглавным «Accept»)? –

+0

JSON.parse (JSON.stringify (результаты)) работает с параметром accept или без него. – Margi

Смежные вопросы