127 Views
September 20, 14
スライド概要
WordBenchOsakaで発表したスライドです。
Developer
Wordpress×Linked Open Data LODを使ったサイトと プ ラ グイ ン を 作 っ て み た 話 WordBench Osaka
自己紹介 ! 岡本 秀高 • 株式会社ロックウェーブ • aishipR/WordPress • 作ったプラグイン:1つ • http://wp-kyoto.net/
WordPress公式テーマ紹介ブログ http://wp-kyoto.net/
LODを使ったサイト
びわ湖花火大会×LOD http://琵琶湖花火.com
Code for Shiga/Biwako http://opendata.shiga.jp/
使ったもの • ワークショップのサンプル • jQuery&SPARQL • TwitterBootstrap • WordPress • GoogleMapAPI
周辺店舗や地図情報を表示
カ ス タム フ ィ ー ル ド で 実 装
JSを投稿画面で直接記入
セキュリティ的に よろしくない
NEXT
L O D を 使 っ た プ ラ グイ ン
WIKIPEDIAの寺情報を表示
今度はショートコード
もうWIKIPEDIAから 毎 回 コ ピペ す る 必 要 な し !
BUT
DBPEDIAに 存在し無い 情報は 取得できない ! DBpedia:http://ja.dbpedia.org/
今回 参考にしたもの • Codex • プラグイン開発バイブル • DBpedia
ショートコードを使う
add_shortcode('db-temple', 'db_temple_shortcode');
function db_temple_shortcode($place){
$default_atts = array('text' => '');
$merged_atts = shortcode_atts( $default_atts, $place);
extract( $merged_atts);
<中略>
$.getJSON('" . get_sparql_data($text) . "',function(data) {
詳細は
S PA R Q L を 使 う - 1 : 寺 名 を セ ッ ト
function get_sparql_data($place){
if (!empty($place)) {
$place = esc_html($place);
} else {
$place = ".*";
}
S PA R Q L を 使 う - 2 : ク エ リ を 作 る
$sparql_base_url ="PREFIX dbpedia-owl: <http://
dbpedia.org/ontology/>PREFIX rdfs: <http://www.w3.org/
2000/01/rdf-schema#>PREFIX dcterms:<http://purl.org/
dc/terms/>select distinct * where {?link dcterms:subject
<http://ja.dbpedia.org/resource/Category:西国三十三所
>;rdfs:comment ?cont;dbpedia-owl:thumbnail ?
thumb;dbpedia-owl:address ?address;rdfs:label ?
name.FILTER (REGEX (?name, '{$place}'))}";
$sparql_base_url = urlencode($sparql_base_url);
SPARQLクエリのテスト http://ja.dbpedia.org/sparql
HTMLで結果が見れる http://ja.dbpedia.org/sparql
S PA R Q L を 使 う - 2 : ク エ リ を 作 る
$sparql_base_url ="PREFIX dbpedia-owl: <http://
dbpedia.org/ontology/>PREFIX rdfs: <http://www.w3.org/
2000/01/rdf-schema#>PREFIX dcterms:<http://purl.org/
dc/terms/>select distinct * where {?link dcterms:subject
<http://ja.dbpedia.org/resource/Category:西国三十三所
>;rdfs:comment ?cont;dbpedia-owl:thumbnail ?
thumb;dbpedia-owl:address ?address;rdfs:label ?
name.FILTER (REGEX (?name, '{$place}'))}";
$sparql_base_url = urlencode($sparql_base_url);
S PA R Q L を 使 う - 3 : U R L を 返 す
$sparql_url = "http://ja.dbpedia.org/sparql?defaultgraph-uri=http%3A%2F
%2Fja.dbpedia.org&query={$sparql_base_url}
&format=application%2Fsparql-results
%2Bjson&timeout=0";
return $sparql_url;
あ と は J S O N と して 扱 う だ け http://megane-blog.com/2014/09/09/1377
GITHUBで公開中 https://github.com/hideokamoto/saigoku33data-by-sparql
応用 「日本さくら名所100選」 VER
SPARQLを書き換える Category:西国三十三所 ↓ Category:日本さくら名所100選
ここを・・・
$sparql_base_url ="PREFIX dbpedia-owl: <http://
dbpedia.org/ontology/>PREFIX rdfs: <http://www.w3.org/
2000/01/rdf-schema#>PREFIX dcterms:<http://purl.org/
dc/terms/>select distinct * where {?link dcterms:subject
<http://ja.dbpedia.org/resource/Category:西国三十三所
>;rdfs:comment ?cont;dbpedia-owl:thumbnail ?
thumb;dbpedia-owl:address ?address;rdfs:label ?
name.FILTER (REGEX (?name, '{$place}'))}";
$sparql_base_url = urlencode($sparql_base_url);
こうす る だ け
$sparql_base_url ="PREFIX dbpedia-owl: <http://
dbpedia.org/ontology/>PREFIX rdfs: <http://www.w3.org/
2000/01/rdf-schema#>PREFIX dcterms:<http://purl.org/
dc/terms/>select distinct * where {?link dcterms:subject
<http://ja.dbpedia.org/resource/Category:日本さくら名
所100選>;rdfs:comment ?cont;dbpedia-owl:thumbnail ?
thumb;dbpedia-owl:address ?address;rdfs:label ?
name.FILTER (REGEX (?name, '{$place}'))}";
$sparql_base_url = urlencode($sparql_base_url);
PHPで処理する場合 ↓ wp_remote_getを使う
プ ラ グイ ン に し て み て 思ったこと
公 式 ディ レ ク ト リ に は 登録しづらい
理由 ! 多言語(というか英語) に対応できない
多言語対応された LODの登場を 期 待 して い ま す
最後に
LOD = API
S PA R Q L さ え 覚 え れ ば 、 WIKIPEDIAや行政データを 簡単にサイトに取り込める
観光ガイド ア フィ リ エイ ト 市民活動 等々…
データの引用を よくされる方は、 是非お試しを
ONE MORE THING
実はGOOGLEにも 注 目 さ れて る
JSON-LD http://json-ld.org/
JSON-LD ! JSON形式で作る L I N K E D O P E N D ATA
構 造 化 デ ー タ マー ク ア ップ 支 援 ツ ール https://www.google.com/webmasters/markup-helper/
GOOGLEのロボットは JSON-LDを認識する
JSON-LDがあると どうなる?
こう な る
ありがとうございました!
Twitter:@motchi0214 Facebook:hideokamoto