#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. (рабочий машинописный текст можно найти в вопросе)