2017-06-03 43 views
0

我用SPARQL查詢DBPedia。查詢工作正常。現在我想在我的Angular 2 Project中從這個查詢中獲取數據。我們需要通過AJAX來做到這一點。給定的方法如下所示:getSPARQLTypes(): void {}我不知道如何在AJAX和Typescript中使用SPARQL。用Angular 2 Typescript和AJAX提交SPARQL查詢

+0

也許RFC的幫助,https://www.w3.org/TR/sparql11-http-rdf-update/ – toskv

+0

我發現這個:https://stackoverflow.com/questions/29435797/http-post-request -angularjs,但這是爲angularjs。我怎樣才能做到這一點角2? – Lileana

+0

它像任何其他通過Ajax的HTTP請求一樣工作。我不明白這個問題,網上有很多例子。 – AKSW

回答

0

您可以使用框架提供的Http服務來做到這一點。

您在其他帖子中描述的請求看起來像這樣。

import { Component } from '@angular/core'; 
import { Http, RequestOptionsArgs, Headers, URLSearchParams } from '@angular/http'; 
import 'rxjs/add/operator/map' 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent { 
    private sparkqlData = null; 
    constructor(private http: Http) { } 

    sparkql() { 
    let headers: Headers = new Headers({ 
     'Content-type': 'application/x-www-form-urlencoded', 
     'Accept': 'application/json' 
    }); 

    let params = new URLSearchParams(); 
    params.append('query', 'SELECT * WHERE { <http://dbpedia.org/resource/Awolnation> ?pref ?obj } LIMIT 10'); 
    params.append('format', 'json'); 

    let options: RequestOptionsArgs = { 
     headers: headers, 
     params: URLSearchParams 
    }; 

    this.http.get('http://dbpedia.org/sparql', options) // 1 
     .map(response => response.json()) 
     .subscribe(data => { 
      console.log(data); 
      this.sparkqlData = data; // 3 
     }); 
    console.log(this.sparkqlData); // 2 
    } 
} 

您可以保存日期後用它來工作,但要記住,請求是異步的,這正如你所預料的變量不會被填充。

我用語句的執行順序添加了註釋。

+0

我試過了,但是我得到了「406不可接受的URL:http://dbpedia.org/sparql」 「 – Lileana

+0

好吧我修正了它,它與'Content-Type'一起工作:'application/json'和search:params。謝謝!我該如何將響應綁定到一個變量上,以便我可以使用它? – Lileana

+0

@Lileana是你確定你知道打字稿的基礎知識嗎?我的意思是這不僅僅是基本的......任何在網絡上的搜索都會向你展示教程 – AKSW