Может ли кто-нибудь показать мне пример загрузки файлов .srj, полученных в результате запроса конечной точки Sesame SPARQL с использованием getJSON jQuery? Я пытался установить заголовок Accept и другие трюки, но я все еще вижу код 200 и, по-видимому, никакой ошибки, но содержимое файла не загружается.
$.getJSON("http://localhost:8090/openrdf-sesame/repositories/myrepo?queryLn=SPARQL&query=QUERY&limit=none&infer=true&Accept=application%2Fsparql-results%2Bjson",
{
},
function(data) {
alert('data = ', data);
});
Я пробовал что-то подобное и бесчисленное множество других вариантов, и это все еще не работает. Я должен упомянуть, что я тестировал оба случая:
- Tomcat не монтируется в Apache, случай, когда у нас есть междоменный запрос - и я попытался установить все, что нужно, в браузере;
- Tomcat смонтирован в Apache, который, насколько я знаю, не требовал ничего другого для работы, но все равно безуспешно.
Вот Заголовок запроса:
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate
Accept-Language:en-us,en;q=0.5
Connection:keep-aliveHost:localhost:8090
Origin:http://localhost
Referer:http://localhost/d3v280/examples/ablodvis/localtest.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0
Вот Заголовок ответа:
Content-Disposition:attachment; filename=query-result.srj
Content-Language:en-US
Content-Type:application/sparql-results+json;charset=UTF-8
Date:Mon, 28 May 2012 14:06:06 GMT
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked
Как видите, я получаю результат в файле query-result.srj, но не знаю, как получить к нему доступ. Я бы очень хотел, чтобы первая версия работала, но, видимо, я что-то упускаю. Все аналогичные запросы getJSON работали.
Вот запрос, который почти работает:
$.ajax({
beforeSend: function(xhrObj){
xhrObj.setRequestHeader("Accept","application/sparql-results+json");
},
dataType: 'jsonp',
url: queryUrl,
success: function(data) {
// callback code here
console.log("source: " + data.length)
alert('success!');
}
});
Однако он выдает «ошибку недопустимой метки» в Firefox, тогда как в Chrome он не выдает никаких ошибок, но, как я вижу во второй строке моего query-results.srj em> показывает Uncaught SyntaxError: Unexpected token:. Вот как выглядят первые строки ответа:
{
"head": {
"vars": [ "s", "p", "o", "r" ]
},
"results": {
"bindings": [ ...
На этот раз я могу увидеть успешно выполненный запрос и увидеть его в своем браузере (по крайней мере, в режиме отладки как в Chrome, так и в Firefox). Должен ли я понимать, что трюк jsonp не работает с Sesame? Если я возьму ответ от Sesame, скопирую его в файл, переименую в file.js и загружу с помощью $.getJSON, он будет работать нормально... Я не хочу иметь серверную часть код для этого приложения, просто для прямой обработки результата запроса SPARQL. Я легко настроил остальные источники (WorldBank, DBPedia и другие) через $.getJSON или $.ajax.
С наилучшими пожеланиями!