2012年11月24日土曜日

SPARQL ResultをSIMILE Timeline Widgetで表示する

昔からあるツールだけど時系列データの可視化ツール「SIMILE Timeline Widget」はSPARQLによる問い合わせ結果をそのまま表示できるらしい.

さっそく試してみる.

問い合わせは先はdbpedia.org.

SPARQL endpointはhttp://dbpedia.org/sparqlを利用する.

問い合わせ文は以下のとおり.

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf:<http://xmlns.com/foaf/0.1/>
PREFIX dbpprop: <http://dbpedia.org/property/>
select * where {
?s rdf:type foaf:Person .
?s rdf:type <http://dbpedia.org/class/yago/PeopleOfMuromachiPeriodJapan> .
?s rdfs:label  ?title.
filter(lang(?title)="ja").
?s rdfs:comment  ?description.
filter(lang(?description)="ja").
?s dbpprop:dateOfBirth ?start .
?s dbpprop:dateOfDeath ?end .
?s foaf:isPrimaryTopicOf ?link .
}
室町時代の日本人の生没年と解説を検索する.

Timelineの方は以下のとおり.


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Timeline demo</title>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script src="libs/timeline/api/timeline-api.js" type="text/javascript"></script>
<script type="text/javascript">
var tl;
function onLoad() {
var eventSource = new Timeline.DefaultEventSource();
var bandInfos = [
Timeline.createBandInfo({
eventSource: eventSource,
date: "Jun 1 1534 00:00:00",
width: "80%",
intervalUnit: Timeline.DateTime.YEAR,
intervalPixels: 10
}),
Timeline.createBandInfo({
overview: true,
eventSource: eventSource,
date: "Jun 1 1534 00:00:00",
width: "20%",
intervalUnit: Timeline.DateTime.YEAR,
intervalPixels: 200
})
];
bandInfos[1].syncWith = 0;
bandInfos[1].highlight = true;

tl = Timeline.create(document.getElementById("my-timeline"), bandInfos);
//var sparql="/lod/result01.xml";
var sparql="http://dbpedia.org/sparql?query=以降省略";
Timeline.loadXML(sparql,function(xml,url){eventSource.loadSPARQL(xml,url);});
}

var resizeTimerID = null;
function onResize() {
if (resizeTimerID == null) {
resizeTimerID = window.setTimeout(function() {
resizeTimerID = null;
tl.layout();
}, 500);
}
}
</script>
<style>
</style>
</head>
<body onload="onLoad();" onresize="onResize();">
<div id="my-timeline" style="height: 600px; width: 800px; border:1px solid #aaa"></div>
<noscript>
This page uses Javascript to show you a Timeline. Please enable Javascript in your browser to see the full page. Thank you.
</noscript>
</body>
</html>

結果波以下のとおり.

うーん.こんなことが簡単にできるなんて,





















色々と使えそう.

0 件のコメント:

コメントを投稿