HOME > ブログ > SPARQL > SPARQL初心者の学習日誌#2

SPARQL初心者の学習日誌#2

2018年10月10日 (水)
  • 前回でSPARQLのクエリ文の書き方を学習したので、今回はそのクエリ文を利用して簡単なwebアプリを作る。

前回ではクエリ文を作り、データをjson形式で入手することに成功した。
そこで、今回はそのデータとHTML,CSS,JavaScriptを使ってwebアプリを作ってみる。

レンタルサイクルステーションの一覧があるので、まず地図上でその位置がわかるようにする。福野泰介の一日一創を参考にしながら進めていく。


最初にGoogle Maps JavaScript APIを使って、地図を表示する。

事前にAPIを読み込んで置いて、以下のコードでGoogle Mapを表示することができた。この時にmap-canvasのサイズを指定しておく。

window.onload = function () {
 var mapDiv = document.getElementById("map-canvas");
 var map = new google.maps.Map(mapDiv, {
 center: new google.maps.LatLng(緯度, 経度),
 zoom: 11,
 });
}

次にクエリ文を使ってレンタルサイクルステーションをこの地図上に表示していく。
最初にjsonファイルを取得して解析する。

window.onload = function () {
 var mapDiv = document.getElementById("map-canvas");
 var map = new google.maps.Map(mapDiv, {
 center: new google.maps.LatLng(35, 139),
 zoom: 11,
 });
 var query = `prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
 prefix jrrk: <http://purl.org/jrrk#>
 prefix schema: <http://schema.org/>
 prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 prefix odp: <http://odp.jig.jp/odp/1.0#>
 prefix ic: <http://imi.go.jp/ns/core/rdf#>
 prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
select ?label ?lat ?lng {
?s ?p odp:RentalCycleStation;
rdfs:label ?label;
geo:lat ?lat;
geo:long ?lng;
}limit 1000
 `;
 var endpointSparql = "https://sparql.odp.jig.jp/api/v1/sparql";
 querySparql(endpointSparql, query, function (data) {
 console.log(data);
 });
 }
 var querySparql = function (baseurl, q, callback) {
 var url = baseurl + "?query=" + encodeURIComponent(q) + "&output=json" + "&callback=" + getCallbackMethod(callback);
 jsonp(url);
 };
 var getCallbackMethod = function (callback) {
 var scallback = "_cb_" + (Math.random() * 1000000 >> 0);
 window[scallback] = function (data) {
 window[scallback] = null;
 callback(data);
 };
 return scallback;
 };
 var jsonp = function (url) {
 var head = document.getElementsByTagName("head")[0];
 var script = document.createElement("script");
 script.setAttribute("src", url);
 script.setAttribute("type", "text/javascript");
 head.appendChild(script);
 };

最後にそれぞれの座標にマーカーを設置する。

querySparql(endpointSparql, query, function (data) {
 console.log(data);
 var items = data.results.bindings;
 var spotCounter = 0;
 for (var i = 0; i < items.length; i++) {
 var item = items[i];
 var lat = item.lat.value;
 var lng = item.lng.value;
 var label = item.label.value;
 var marker = new google.maps.Marker({
 position: new google.maps.LatLng(lat, lng),
 icon: {
 url: "icon.png",
 size: new google.maps.Size(100, 100),
 origin: new google.maps.Point(0, 0),
 anchor: new google.maps.Point(15, 15),
 },
 map: map
 });
 }
});
 

このサンプルプログラムを改良して、レンタルサイクルステーションの近くにある観光地がわかるwebアプリを作ってみた。

レンタルサイクルステーションリスト

ソースコード

カテゴリー

(c) B Inc. All rights reserved.

AltStyle によって変換されたページ (->オリジナル) /