Отправка запроса обновления SPARQL в Graphdb из Angular

#angular #curl #insert #sparql #graphdb

#angular #curl #вставить #sparql #graphdb

Вопрос:

Я пытаюсь отправить ОБНОВЛЕНИЕ (insert) экземпляру Graphdb, начиная с веб-приложения ANGULAR (typescript). Поэтому мне нужно было бы создать HTTP GET-запрос, но я не могу понять, как правильно отформатировать этот http-запрос внутри приложения ANGULAR. Большинство онлайн-руководств работают с файлами .JSON для получения / публикации данных, а не с графиками RDF.

Я надеялся сделать это через ‘curl’ и каким-то образом запустить curl-команду из angular, но я даже не могу заставить команду curl работать внутри моей собственной консоли. Я следовал этому руководству и просматривал ответы stackoverflow, пока не пришел к следующей команде для ОБНОВЛЕНИЯ SPARQL для GraphDB:

 curl -G -H "Accept:application/x-trig" 
-d update=INSERT DATA { dc:title "pullnaam%22} 
http://localhost:7200/repositories/myrepository/statements
  

Когда я выполняю эту команду, консоль возвращает все ресурсы / узлы внутри графика, но фактически не выполняет обновление внутри команды curl.

Любая помощь была бы с благодарностью принята, и я заранее приношу извинения, если я забыл добавить что-то важное. Я тестирую еще несколько вариантов команды curl и надеюсь скоро отредактировать этот вопрос.

Заранее спасибо!

Редактировать: рабочая команда curl является:

 curl -X POST -G -H "Accept:application/x-trig" -d
update=INSERT DATA { dc:title "pullnaam%22}  
http://localhost:7200/repositories/myrepository/statements
  

Редактировать: рабочая команда POST внутри typescript / angular является:

 function(event){
const body = "update=INSERT DATA { dc:title "pullnaam"} ";
const headers = new HttpHeaders().set('Accept', 'application/x-trig').set('Content-Type','application/x-www-form-urlencoded');
let options = { headers:HttpHeaders};
var url = "http://128.199.58.129:7200/repositories/repo/statements";
return this.http.post(url,body,{headers:headers}).toPromise().then(function(response) { console.log(response.toString())});
}
  

Комментарии:

1. Я думал, вам нужно использовать POST-запрос для обновления SPARQL или нет? Смотрите спецификации SPARQL

Ответ №1:

Вы получаете инструкции возврата, потому что выполняете запрос GET к /statements ресурсу. Обновление SPARQL — это запрос POST. Вам нужно добавить -X POST к вашему запросу curl.

Комментарии:

1. Спасибо, это действительно так просто. Я попытался использовать команду POST, как написано в руководстве GraphDB, которая не сработала. Теперь рабочая команда curl: curl -X POST -G -H «Accept:application / x-trig» -d update=INSERT DATA { dc:title «pullnaam»} localhost:7200/repositories/myrepository/statements Теперь мне нужно просто найти способ создайте такую команду POST, начиная с angular, но я уверен, что смогу найти это самостоятельно. Большое вам спасибо!

2. @AndrewMalcolm разве это уже не часть Http класса? Должен быть метод Http.post()

3. @AKSW да, но мне нужно также отформатировать эту команду. Это то, что у меня есть прямо сейчас, но, похоже, это не работает: var body= "update=INSERT DATA { dc:title "pullnaam"} "; let headers = new HttpHeaders().set('Accept', 'application/x-trig'); let options = { headers:HttpHeaders}; var url = "http://localhost:7200/repositories/DBtestclean/statements"; this.http.post(url,body,{headers});

4. Хм, почему вы используете этот тип Accept MIME? Это только для запросов GET. Не копируйте и не вставляйте ничего, попытайтесь понять концепцию и начните с нуля. Вы читали документы , на которые я ссылался ранее? Проверьте там все, особенно тип содержимого запроса. Это явно не тригонометрический

5. @AKSW Я заставил это работать благодаря этим документам и переполнению просмотра, еще раз спасибо. просто потребовалось немного больше времени, чтобы понять некоторые вещи, потому что у меня нет опыта программирования. Заголовок ‘accept:x-trig’ был необходим, хотя, вероятно, это связано с GraphDB. (рабочий машинописный текст можно найти в вопросе)