SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
ふぉとぶらり+LODAC
iPhoneアプリでのSPARQL
      の活用事例
 株式会社ATR-Promotions
 ミュージアムメディア事業部
      上田 洋
       h-ueda@atr-p.com
    http://museum-media.jp/
自己紹介

• 所属
 – 株式会社ATR-Promotions
              ミュージアムメディア事業部
• 仕事
 – 地理情報システムの開発
 – 具体的には iPhoneアプリ「ふぉとぶらり」の開発を
   担当
ATR-Promotionsとは?
• 国際電気通信基礎技術研究所(通称ATR)
  の研究成果を事業展開
 – 計測機器・ソフトウェアの販売
 – 脳活動計測装置(MRI装置やMEG装置)の貸出
 – など
• ATRとは?
 – 情報通信技術に関わる研究開発を行う民間の研
   究所
 – 研究分野
   • ロボット、脳情報、無線通信、メディア情報
   • など
ミュージアムメディア事業部とは?
• ミュージアム向けモバイルガイド
 – 映画村でDS
  • ニンテンドーDSを利用したガイドシステム
• コンシューマー向け地理情報システム
 – 「ちずぶらり」シリーズ
  • 古地図・絵地図など空間的に歪んだ地図の上で現在地
    が表示できる街歩きiPhone/iPadアプリ
  • 手持ちの古地図・絵地図を手軽に「ちずぶらり」として利
    用できるオンラインサービスを近日中にリリース予定
 – 「ふぉとぶらり」
  • 撮影時のほぼ全ての状態を記録できるiPhoneカメラア
    プリ(iPad2でも利用可能)
  • 撮影場所を地図上にかわいく・わかりやすく表示
ふぉとぶらりとは?
• 撮影時の全て状態を記録・管理できる多機能
  カメラアプリ
 – 撮影時の位置、方角、仰角(上下の向き)を自動
   的に記録でき、かつ、撮影時の状況をメモとして
   記録可能
• リストと地図で写真を閲覧・検索
 – かわいいねこ・いぬアイコンで撮影時の状態を地
   図上に表示
ねこの向いている方向で、
撮影した方角がわかります!
      北




          南東
iPhoneを下に向けて撮影すると…
iPhoneを上に向けて撮影すると…
ふぉとぶらりとLODACの連携

• 地図上に写真とともに、
  LODACの地理情報
  (POI)を表示する機能
  を実装
• 6月2・3日に開催された
  NIIオープンハウスで
  デモ展示
LODACとは?
• LODAC(Linked Open Data for Academia)
• 学術情報をLinked Open Dataとして公開・共
  有
  – 美術館・博物館情報
  – 地理情報
• 現在「LODAC Museum(α版)」でデータ公開
  中
• SPARQLエンドポイントも公開
ふぉとぶらりのご紹介



システムデモをご覧下さい
新発売!「ふぉとぶらりPro」
•   POI表示版「ふぉとぶらり」を近日リリース予定
•          ふぉとぶらりPro」
    名前は「ふぉとぶらり
•   写真と同時に、
    1. DBPedia        SPARQLで検索
                            で
    2. Linked Geo Data
    3. sinsai.info
    の情報を地図上に表示可能
    – モバイルDBPedia、Linked Geo Dataビューアにも
•   「写真」カテゴリ、価格は350円を予定

•   「ふぉとぶらりPro」をどうぞよろしくお願いします!
iPhoneアプリでSPARQLを
      使うには?
iPhoneアプリの開発に必要なものは?

•    iPhone(iPad)アプリの開発には、以下が必須
     (AppStore向け)
    1.   Intel社製CPU搭載Mac (Windowsは不可)
    2.   Xcode(IDE)
    3.   Objective-C
    –    部分的にプロジェクト内でC言語、C++は利用可能
Objective-Cとはどんな言語?
• 基本的な文法はC言語に準拠するが、Objective-C
  独特な記述をする部分がある
• メソッド(関数)の呼び出しが独特
     (Java)
        boolean flag = obj.equals(comp);
     (Objective-C)
        BOOL flag = [obj isEqual:comp];
• クラスの作成が独特
 – クラス定義部(@interface ~ @end)
 – クラス実装部(@implementation ~ @end)
• 「コンストラクタ」はない
#import <Foundation/Foundation.h>

@interface MyClass : NSObject {
         NSString* str;
}
-(NSString*) combineDirectory:(NSString*)dir addFile:(NSString*)file;

@end                            MyClass* mc = [[MyClass alloc] init];
                                NSString* path
@implementation MyClass           = [mc combinDirectory:@”text” addFile:@”doc”];
                                NSLog(@”Current Path: “%@””, path);
                                                            ”
- (id)init {
   self = [super init];
   if(self != nil) { str = @“c:/hoge/“; }
   return self;
}                                           Current Path: “C:/hoge/text/doc.txt”
                                                                               ”
- (void)dealloc {
   [super dealloc];
}

- (NSString*) combineDirectory:(NSString*)dir addFile:(NSString*)file {
         return [str stringByAppendingFormat:@”%@/%@.txt”, dir, file];
}
@end
Objective-CでSPARQLで使うには?


• HTTP通信による情報取得
• XML、JSONのパーサーによる解析
HTTP通信による情報取得
• NSURLConnectionを利用
NSURL *url = [NSURL URLWithString:@"http://lod.ac/"];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
NSURLResponse *resp;
NSError *err;
NSData *data = [NSURLConnection sendSynchronousRequest:req
                                             returningResponse:&resp
                                                          error:&err];
NSString* result = [[NSString alloc] initWithData:data
                                         encoding:NSUTF8StringEncoding];


• 問題点:NSStringのURLEncodeが不完全
    – NSStringは文字列クラス
URLEncodeが不完全

• GETでSPARQLクエリを送信する場合は、
  URLEncodeが必要
• NSStringクラスにURLEncode変換メソッドはあ
  るが...
 – [NSString stringByAddingPercentEscapesUsingEncoding:]

• なぜか、一部文字がエンコードされない
 –$&+,/:;=?@
URLEncodeが不完全
• 代替で
  「CFURLCreateStringByAddingPercentEscapes」
  を使用することで回避

NSString* sparql = @” SELECT * WHERE { ?s ?p ?o. } LIMIT 10” ;
NSString* query =
  (NSString*)CFURLCreateStringByAddingPercentEscapes(
                                        kDFAllocatorDefault,
                                        (CFStringRef)sparql,
                                        NULL,
                                        CFSTR(“;,/?:@=+$#”),
                                        kCFStringEncodingUTF8) ;
XML、JSONのパーサーの利用
• XML、JSONの利用には、プロジェクトにライブラリ
  の組み込みが必要
• XML
  –   NSXMLParser
  –   Libxml
  –   TouchXML
  –   KissXML
  –   など
• JSON
  – JSON Framework
  – TouchJSON
  – など
ふぉとぶらりでは?


• RDFをJSON形式で取得
• JSONの解析に
    JSON Framework(SBJSON)を使用
• JSON Framework
 – JSONを連想配列(NSDictonary)形式で返す
HTTPヘッダーにMIMEタイプ指定
  • MIMEタイプをJSONに指定

NSURL *url = [NSURL URLWithString: sparql_query ];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];

[req setValue:@”application/sparql-results+json”
     forHTTPHeaderField:@”Accept”];                   JSON形式での結果を要求
                                                          形式での結果を
                                                          形式での結果

NSURLResponse *resp;
NSError *err;
NSData *data = [NSURLConnection sendSynchronousRequest:req
                                             returningResponse:&resp
                                                          error:&err];
NSString* result = [[NSString alloc] initWithData:data
                                         encoding:NSUTF8StringEncoding];
JSON Frameworkをプロジェクトへ追加
• ソースをプロジェクトにコピーするだけ
LODACのRDF/JSON結果
{
    "head": {
    "vars": [ "link", "title", "lat", "long" ]
    },
    "results": {
       "bindings": [
       {
          "title": { "type": "literal",
                     "xml:lang": "ja",
                                けいはんなプラザ郵便局"
                                けいはんなプラザ郵便局
                     "value": "けいはんなプラザ郵便局 },
          "long": { "type": "typed-literal",
                     "datatype": "http:¥/¥/www.w3.org¥/2001¥/XMLSchema#float",
                     "value": "135.763971" },
          "lat": { "type": "typed-literal",
                     "datatype": "http:¥/¥/www.w3.org¥/2001¥/XMLSchema#float",
                     "value": "34.745723" },
          "link": { "type": "uri",
                     "value": "http://lod.ac/id/577214" }
       },
    ...
SPARQLクエリ
• FILTERにより地図表示領域のみを対象に
 PREFIX dct: <http://purl.org/dc/terms/>
 PREFIX omgeo: <http://www.ontotext.com/owlim/geo#>
 PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 SELECT distinct ?link ?title ?lat ?long
 WHERE{
   ?link dct:references ?ref.
   ?ref rdfs:label ?title.
   ?ref geo:lat ?lat.
   ?ref geo:long ?long.
   ?ref omgeo:within(北西の緯度 北西の経度 南東の緯度 南東の経度
                        北                               経度).
 }
 Limit 30
SBJSON.h を import

       JSON Frameworkコーディング
#import “SBJSON.h"           JSONのテキスト(NSString)
                                 のテキスト

~~~~~~~

NSDictionary *json = [text JSONValue];
                                               NSStringの拡張メソッドとして
                                                       の拡張メソッドとして
                                                          メソッド
                                                   解析(JSONValue)
                                                   解析
NSDictionary* results
               = [[json objectForKey:@"results"] objectForKey:@"bindings"];

                                                             連想配列から取得
                                                             連想配列から取得
                                                                 から
for ( NSDictionary* result in results ){
   NSString* title = [[result objectForKey:@"title"] objectForKey:@"value"];
   NSString* lat    = [[result objectForKey:@"lat"] objectForKey:@"value"];
   NSString* long = [[result objectForKey:@"long"] objectForKey:@"value"];
   NSString* link = [[result objectForKey:@"link"] objectForKey:@"value"];

     NSLog(@"%@ : %@ : %@ : %@", title, lat, long, link);
}
あとは地図にのせるだけ
まとめ
• iPhoneアプリ「ふぉとぶらり」でのSPARQLの
  導入事例を紹介
• 導入がとても簡単
• SPARQLのメリット
 – 他のSPARQLエンドポイントを公開するプロバイ
   ダ(DBPedia、LGD)でもほぼ同様のコードを利
   用可能
 – SPARQLが普及すれば、ユーザが自由にデータ
   を追加できるようにすることが可能
                    = 自由度が広がる
謝辞
• iPhoneアプリ「ふぉとぶらり」とLODACの連
  携について、情報・システム研究機構 新領域
  融合研究センター「LODAC」プロジェクトの皆
  様にご協力をいただきました。深く感謝いたし
  ます。
ご清聴ありがとうございました
参考
• ふぉとぶらり(AppStore)
  – http://itunes.apple.com/jp/app/id404106239?mt=8
• LODAC
  – http://lod.ac/
  – http://lod.ac/sparql (Endpoint)
• SPARQL
  – http://www.asahi-net.or.jp/~ax2s-kmtn/internet/rdf/rdf-
    sparql-query.html
• JSON Framework
  – https://github.com/stig/json-framework/

Weitere ähnliche Inhalte

Was ist angesagt?

Cloud computing competition by Hapyrus
Cloud computing competition by HapyrusCloud computing competition by Hapyrus
Cloud computing competition by HapyrusKoichi Fujikawa
 
JSON Based Web Services
JSON Based Web ServicesJSON Based Web Services
JSON Based Web ServicesToru Yamaguchi
 
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」de:code 2017
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編Miki Shimogai
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門Yohei Sasaki
 
より深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニングより深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニングYuto Hayamizu
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlInnami Satoshi
 
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!文樹 高橋
 
はじめてのCouch db
はじめてのCouch dbはじめてのCouch db
はじめてのCouch dbEiji Kuroda
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)Hiromu Shioya
 
PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017Shigeru Hanada
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習x1 ichi
 
JPUGしくみ+アプリケーション勉強会(第20回)
JPUGしくみ+アプリケーション勉強会(第20回)JPUGしくみ+アプリケーション勉強会(第20回)
JPUGしくみ+アプリケーション勉強会(第20回)Yoshinori Nakanishi
 
Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwPgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwToshi Harada
 
MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略ippei_suzuki
 
Esm lt threading_macro
Esm lt threading_macroEsm lt threading_macro
Esm lt threading_macro工 久納
 
カジュアルにソースコードリーディング
カジュアルにソースコードリーディングカジュアルにソースコードリーディング
カジュアルにソースコードリーディングAkihiro Okuno
 
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseOsc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseToshi Harada
 

Was ist angesagt? (20)

Rakuten tech conf
Rakuten tech confRakuten tech conf
Rakuten tech conf
 
Cloud computing competition by Hapyrus
Cloud computing competition by HapyrusCloud computing competition by Hapyrus
Cloud computing competition by Hapyrus
 
JSON Based Web Services
JSON Based Web ServicesJSON Based Web Services
JSON Based Web Services
 
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
 
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
 
より深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニングより深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニング
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http url
 
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
WPD-Fes #3 2015年のサバイバル学習術 Web開発技術の税引後利益 を最大化しよう!
 
はじめてのCouch db
はじめてのCouch dbはじめてのCouch db
はじめてのCouch db
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)
 
PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017PostgreSQL 10 新機能 @オープンセミナー香川 2017
PostgreSQL 10 新機能 @オープンセミナー香川 2017
 
広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習広告配信現場で使うSpark機械学習
広告配信現場で使うSpark機械学習
 
JPUGしくみ+アプリケーション勉強会(第20回)
JPUGしくみ+アプリケーション勉強会(第20回)JPUGしくみ+アプリケーション勉強会(第20回)
JPUGしくみ+アプリケーション勉強会(第20回)
 
Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwPgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdw
 
MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略MongoDB: システム可用性を拡張するインデクス戦略
MongoDB: システム可用性を拡張するインデクス戦略
 
Esm lt threading_macro
Esm lt threading_macroEsm lt threading_macro
Esm lt threading_macro
 
カジュアルにソースコードリーディング
カジュアルにソースコードリーディングカジュアルにソースコードリーディング
カジュアルにソースコードリーディング
 
MapReduce入門
MapReduce入門MapReduce入門
MapReduce入門
 
Osc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-databaseOsc shimane-2016-do-postgres-dream-of-graph-database
Osc shimane-2016-do-postgres-dream-of-graph-database
 

Ähnlich wie ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-

OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック庸介 高橋
 
Spring Data in a Nutshell
Spring Data in a NutshellSpring Data in a Nutshell
Spring Data in a NutshellTsuyoshi Miyake
 
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractSpring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractTakeshi Ogawa
 
Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127Shotaro Suzuki
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情takezoe
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Shinsuke Sugaya
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2Atsuo Yamasaki
 
PGCon.jp 2014 jsonb-datatype-20141205
PGCon.jp 2014 jsonb-datatype-20141205PGCon.jp 2014 jsonb-datatype-20141205
PGCon.jp 2014 jsonb-datatype-20141205Toshi Harada
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックスTomoharu ASAMI
 
10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormation10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormationKazuyuki Honda
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive ExtensionsShin Ise
 

Ähnlich wie ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例- (20)

OSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニックOSSから学ぶSwift実践テクニック
OSSから学ぶSwift実践テクニック
 
Spring Data in a Nutshell
Spring Data in a NutshellSpring Data in a Nutshell
Spring Data in a Nutshell
 
d3sparql.js
d3sparql.js d3sparql.js
d3sparql.js
 
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractSpring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
 
Silkについて
SilkについてSilkについて
Silkについて
 
Zabbix API
Zabbix APIZabbix API
Zabbix API
 
Java EE8 Report
Java EE8 ReportJava EE8 Report
Java EE8 Report
 
Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127Elastic circle ci-co-webinar-20210127
Elastic circle ci-co-webinar-20210127
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
 
Ll xcode
Ll xcodeLl xcode
Ll xcode
 
Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方Elasticsearchプラグインの作り方
Elasticsearchプラグインの作り方
 
RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
 
PGCon.jp 2014 jsonb-datatype-20141205
PGCon.jp 2014 jsonb-datatype-20141205PGCon.jp 2014 jsonb-datatype-20141205
PGCon.jp 2014 jsonb-datatype-20141205
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormation10分で作る Node.js Auto Scale 環境 with CloudFormation
10分で作る Node.js Auto Scale 環境 with CloudFormation
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
Parse触ってみた
Parse触ってみたParse触ってみた
Parse触ってみた
 
実践 Reactive Extensions
実践 Reactive Extensions実践 Reactive Extensions
実践 Reactive Extensions
 
RとWeb API
RとWeb APIRとWeb API
RとWeb API
 

Mehr von uedayou

Linked Data API Navi(アーバンデータチャレンジ2022)
Linked Data API Navi(アーバンデータチャレンジ2022)Linked Data API Navi(アーバンデータチャレンジ2022)
Linked Data API Navi(アーバンデータチャレンジ2022)uedayou
 
Linked Data API Navi(LODチャレンジ2022)
Linked Data API Navi(LODチャレンジ2022)Linked Data API Navi(LODチャレンジ2022)
Linked Data API Navi(LODチャレンジ2022)uedayou
 
小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~
小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~
小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~uedayou
 
鉄道駅LOD
鉄道駅LOD鉄道駅LOD
鉄道駅LODuedayou
 
LODを誰でも簡単に「Simple LODI」
LODを誰でも簡単に「Simple LODI」LODを誰でも簡単に「Simple LODI」
LODを誰でも簡単に「Simple LODI」uedayou
 
関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~
関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~
関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~uedayou
 
オープンデータとSPARQLでビジュアライズ
オープンデータとSPARQLでビジュアライズオープンデータとSPARQLでビジュアライズ
オープンデータとSPARQLでビジュアライズuedayou
 
SPARQLでオープンデータ活用!
SPARQLでオープンデータ活用!SPARQLでオープンデータ活用!
SPARQLでオープンデータ活用!uedayou
 
大阪市の警察署・交番と犯罪発生地点の重ね合わせ ~大阪市 警察署 x 犯罪発生~
大阪市の警察署・交番と犯罪発生地点の重ね合わせ~大阪市 警察署 x 犯罪発生~大阪市の警察署・交番と犯罪発生地点の重ね合わせ~大阪市 警察署 x 犯罪発生~
大阪市の警察署・交番と犯罪発生地点の重ね合わせ ~大阪市 警察署 x 犯罪発生~uedayou
 
オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~
オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~
オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~uedayou
 
SPARQLでマッシュアップ -LOD活用のための技術紹介-
SPARQLでマッシュアップ-LOD活用のための技術紹介-SPARQLでマッシュアップ-LOD活用のための技術紹介-
SPARQLでマッシュアップ -LOD活用のための技術紹介-uedayou
 
汎用Web API“SPARQL”でオープンデータ検索
汎用Web API“SPARQL”でオープンデータ検索汎用Web API“SPARQL”でオープンデータ検索
汎用Web API“SPARQL”でオープンデータ検索uedayou
 
LODを使ってみよう!
LODを使ってみよう!LODを使ってみよう!
LODを使ってみよう!uedayou
 
AllegroGraphでsgvizler 0.5を使うときの注意点
AllegroGraphでsgvizler 0.5を使うときの注意点AllegroGraphでsgvizler 0.5を使うときの注意点
AllegroGraphでsgvizler 0.5を使うときの注意点uedayou
 
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-uedayou
 
ソースコード公開しました! HTML5 x LOD WEBアプリ “SPARQL Timeliner”
ソースコード公開しました!HTML5 x LOD WEBアプリ“SPARQL Timeliner”ソースコード公開しました!HTML5 x LOD WEBアプリ“SPARQL Timeliner”
ソースコード公開しました! HTML5 x LOD WEBアプリ “SPARQL Timeliner”uedayou
 
Linked Open Data 作成支援ツールの紹介
Linked Open Data作成支援ツールの紹介Linked Open Data作成支援ツールの紹介
Linked Open Data 作成支援ツールの紹介uedayou
 
LODx簡単アプリ作成 SPARQL Timeliner
LODx簡単アプリ作成 SPARQL TimelinerLODx簡単アプリ作成 SPARQL Timeliner
LODx簡単アプリ作成 SPARQL Timelineruedayou
 
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成uedayou
 
お手軽Linked Open Data可視化ツールSPARQL Timeliner
お手軽Linked Open Data可視化ツールSPARQL Timelinerお手軽Linked Open Data可視化ツールSPARQL Timeliner
お手軽Linked Open Data可視化ツールSPARQL Timelineruedayou
 

Mehr von uedayou (20)

Linked Data API Navi(アーバンデータチャレンジ2022)
Linked Data API Navi(アーバンデータチャレンジ2022)Linked Data API Navi(アーバンデータチャレンジ2022)
Linked Data API Navi(アーバンデータチャレンジ2022)
 
Linked Data API Navi(LODチャレンジ2022)
Linked Data API Navi(LODチャレンジ2022)Linked Data API Navi(LODチャレンジ2022)
Linked Data API Navi(LODチャレンジ2022)
 
小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~
小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~
小倉百人一首クイズ/路線王 ~駅名だけで鉄道路線を当てるクイズゲーム~
 
鉄道駅LOD
鉄道駅LOD鉄道駅LOD
鉄道駅LOD
 
LODを誰でも簡単に「Simple LODI」
LODを誰でも簡単に「Simple LODI」LODを誰でも簡単に「Simple LODI」
LODを誰でも簡単に「Simple LODI」
 
関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~
関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~
関西におけるボトムアップによるLinked Open Data普及の取り組み~LODハッカソン関西の活動事例を中心に~
 
オープンデータとSPARQLでビジュアライズ
オープンデータとSPARQLでビジュアライズオープンデータとSPARQLでビジュアライズ
オープンデータとSPARQLでビジュアライズ
 
SPARQLでオープンデータ活用!
SPARQLでオープンデータ活用!SPARQLでオープンデータ活用!
SPARQLでオープンデータ活用!
 
大阪市の警察署・交番と犯罪発生地点の重ね合わせ ~大阪市 警察署 x 犯罪発生~
大阪市の警察署・交番と犯罪発生地点の重ね合わせ~大阪市 警察署 x 犯罪発生~大阪市の警察署・交番と犯罪発生地点の重ね合わせ~大阪市 警察署 x 犯罪発生~
大阪市の警察署・交番と犯罪発生地点の重ね合わせ ~大阪市 警察署 x 犯罪発生~
 
オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~
オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~
オープンデータ/Linked Open Data お手軽可視化ツールの紹介~SPARQLでマッシュアップ~
 
SPARQLでマッシュアップ -LOD活用のための技術紹介-
SPARQLでマッシュアップ-LOD活用のための技術紹介-SPARQLでマッシュアップ-LOD活用のための技術紹介-
SPARQLでマッシュアップ -LOD活用のための技術紹介-
 
汎用Web API“SPARQL”でオープンデータ検索
汎用Web API“SPARQL”でオープンデータ検索汎用Web API“SPARQL”でオープンデータ検索
汎用Web API“SPARQL”でオープンデータ検索
 
LODを使ってみよう!
LODを使ってみよう!LODを使ってみよう!
LODを使ってみよう!
 
AllegroGraphでsgvizler 0.5を使うときの注意点
AllegroGraphでsgvizler 0.5を使うときの注意点AllegroGraphでsgvizler 0.5を使うときの注意点
AllegroGraphでsgvizler 0.5を使うときの注意点
 
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
SPARQLを利用した逆マッシュアップ-プログラミングを必要としないアプリ作成方法-
 
ソースコード公開しました! HTML5 x LOD WEBアプリ “SPARQL Timeliner”
ソースコード公開しました!HTML5 x LOD WEBアプリ“SPARQL Timeliner”ソースコード公開しました!HTML5 x LOD WEBアプリ“SPARQL Timeliner”
ソースコード公開しました! HTML5 x LOD WEBアプリ “SPARQL Timeliner”
 
Linked Open Data 作成支援ツールの紹介
Linked Open Data作成支援ツールの紹介Linked Open Data作成支援ツールの紹介
Linked Open Data 作成支援ツールの紹介
 
LODx簡単アプリ作成 SPARQL Timeliner
LODx簡単アプリ作成 SPARQL TimelinerLODx簡単アプリ作成 SPARQL Timeliner
LODx簡単アプリ作成 SPARQL Timeliner
 
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成
TimeMapper2RDFとSPARQL Timelinerで簡単アプリ作成
 
お手軽Linked Open Data可視化ツールSPARQL Timeliner
お手軽Linked Open Data可視化ツールSPARQL Timelinerお手軽Linked Open Data可視化ツールSPARQL Timeliner
お手軽Linked Open Data可視化ツールSPARQL Timeliner
 

Kürzlich hochgeladen

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Kürzlich hochgeladen (9)

[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-

  • 1. ふぉとぶらり+LODAC iPhoneアプリでのSPARQL の活用事例 株式会社ATR-Promotions ミュージアムメディア事業部 上田 洋 h-ueda@atr-p.com http://museum-media.jp/
  • 2. 自己紹介 • 所属 – 株式会社ATR-Promotions ミュージアムメディア事業部 • 仕事 – 地理情報システムの開発 – 具体的には iPhoneアプリ「ふぉとぶらり」の開発を 担当
  • 3. ATR-Promotionsとは? • 国際電気通信基礎技術研究所(通称ATR) の研究成果を事業展開 – 計測機器・ソフトウェアの販売 – 脳活動計測装置(MRI装置やMEG装置)の貸出 – など • ATRとは? – 情報通信技術に関わる研究開発を行う民間の研 究所 – 研究分野 • ロボット、脳情報、無線通信、メディア情報 • など
  • 4. ミュージアムメディア事業部とは? • ミュージアム向けモバイルガイド – 映画村でDS • ニンテンドーDSを利用したガイドシステム • コンシューマー向け地理情報システム – 「ちずぶらり」シリーズ • 古地図・絵地図など空間的に歪んだ地図の上で現在地 が表示できる街歩きiPhone/iPadアプリ • 手持ちの古地図・絵地図を手軽に「ちずぶらり」として利 用できるオンラインサービスを近日中にリリース予定 – 「ふぉとぶらり」 • 撮影時のほぼ全ての状態を記録できるiPhoneカメラア プリ(iPad2でも利用可能) • 撮影場所を地図上にかわいく・わかりやすく表示
  • 5. ふぉとぶらりとは? • 撮影時の全て状態を記録・管理できる多機能 カメラアプリ – 撮影時の位置、方角、仰角(上下の向き)を自動 的に記録でき、かつ、撮影時の状況をメモとして 記録可能 • リストと地図で写真を閲覧・検索 – かわいいねこ・いぬアイコンで撮影時の状態を地 図上に表示
  • 9.
  • 10. ふぉとぶらりとLODACの連携 • 地図上に写真とともに、 LODACの地理情報 (POI)を表示する機能 を実装 • 6月2・3日に開催された NIIオープンハウスで デモ展示
  • 11. LODACとは? • LODAC(Linked Open Data for Academia) • 学術情報をLinked Open Dataとして公開・共 有 – 美術館・博物館情報 – 地理情報 • 現在「LODAC Museum(α版)」でデータ公開 中 • SPARQLエンドポイントも公開
  • 13. 新発売!「ふぉとぶらりPro」 • POI表示版「ふぉとぶらり」を近日リリース予定 • ふぉとぶらりPro」 名前は「ふぉとぶらり • 写真と同時に、 1. DBPedia SPARQLで検索 で 2. Linked Geo Data 3. sinsai.info の情報を地図上に表示可能 – モバイルDBPedia、Linked Geo Dataビューアにも • 「写真」カテゴリ、価格は350円を予定 • 「ふぉとぶらりPro」をどうぞよろしくお願いします!
  • 14. iPhoneアプリでSPARQLを 使うには?
  • 15. iPhoneアプリの開発に必要なものは? • iPhone(iPad)アプリの開発には、以下が必須 (AppStore向け) 1. Intel社製CPU搭載Mac (Windowsは不可) 2. Xcode(IDE) 3. Objective-C – 部分的にプロジェクト内でC言語、C++は利用可能
  • 16. Objective-Cとはどんな言語? • 基本的な文法はC言語に準拠するが、Objective-C 独特な記述をする部分がある • メソッド(関数)の呼び出しが独特 (Java) boolean flag = obj.equals(comp); (Objective-C) BOOL flag = [obj isEqual:comp]; • クラスの作成が独特 – クラス定義部(@interface ~ @end) – クラス実装部(@implementation ~ @end) • 「コンストラクタ」はない
  • 17. #import <Foundation/Foundation.h> @interface MyClass : NSObject { NSString* str; } -(NSString*) combineDirectory:(NSString*)dir addFile:(NSString*)file; @end MyClass* mc = [[MyClass alloc] init]; NSString* path @implementation MyClass = [mc combinDirectory:@”text” addFile:@”doc”]; NSLog(@”Current Path: “%@””, path); ” - (id)init { self = [super init]; if(self != nil) { str = @“c:/hoge/“; } return self; } Current Path: “C:/hoge/text/doc.txt” ” - (void)dealloc { [super dealloc]; } - (NSString*) combineDirectory:(NSString*)dir addFile:(NSString*)file { return [str stringByAppendingFormat:@”%@/%@.txt”, dir, file]; } @end
  • 19. HTTP通信による情報取得 • NSURLConnectionを利用 NSURL *url = [NSURL URLWithString:@"http://lod.ac/"]; NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url]; NSURLResponse *resp; NSError *err; NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:&resp error:&err]; NSString* result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; • 問題点:NSStringのURLEncodeが不完全 – NSStringは文字列クラス
  • 20. URLEncodeが不完全 • GETでSPARQLクエリを送信する場合は、 URLEncodeが必要 • NSStringクラスにURLEncode変換メソッドはあ るが... – [NSString stringByAddingPercentEscapesUsingEncoding:] • なぜか、一部文字がエンコードされない –$&+,/:;=?@
  • 21. URLEncodeが不完全 • 代替で 「CFURLCreateStringByAddingPercentEscapes」 を使用することで回避 NSString* sparql = @” SELECT * WHERE { ?s ?p ?o. } LIMIT 10” ; NSString* query = (NSString*)CFURLCreateStringByAddingPercentEscapes( kDFAllocatorDefault, (CFStringRef)sparql, NULL, CFSTR(“;,/?:@=+$#”), kCFStringEncodingUTF8) ;
  • 22. XML、JSONのパーサーの利用 • XML、JSONの利用には、プロジェクトにライブラリ の組み込みが必要 • XML – NSXMLParser – Libxml – TouchXML – KissXML – など • JSON – JSON Framework – TouchJSON – など
  • 23. ふぉとぶらりでは? • RDFをJSON形式で取得 • JSONの解析に JSON Framework(SBJSON)を使用 • JSON Framework – JSONを連想配列(NSDictonary)形式で返す
  • 24. HTTPヘッダーにMIMEタイプ指定 • MIMEタイプをJSONに指定 NSURL *url = [NSURL URLWithString: sparql_query ]; NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url]; [req setValue:@”application/sparql-results+json” forHTTPHeaderField:@”Accept”]; JSON形式での結果を要求 形式での結果を 形式での結果 NSURLResponse *resp; NSError *err; NSData *data = [NSURLConnection sendSynchronousRequest:req returningResponse:&resp error:&err]; NSString* result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  • 26. LODACのRDF/JSON結果 { "head": { "vars": [ "link", "title", "lat", "long" ] }, "results": { "bindings": [ { "title": { "type": "literal", "xml:lang": "ja", けいはんなプラザ郵便局" けいはんなプラザ郵便局 "value": "けいはんなプラザ郵便局 }, "long": { "type": "typed-literal", "datatype": "http:¥/¥/www.w3.org¥/2001¥/XMLSchema#float", "value": "135.763971" }, "lat": { "type": "typed-literal", "datatype": "http:¥/¥/www.w3.org¥/2001¥/XMLSchema#float", "value": "34.745723" }, "link": { "type": "uri", "value": "http://lod.ac/id/577214" } }, ...
  • 27. SPARQLクエリ • FILTERにより地図表示領域のみを対象に PREFIX dct: <http://purl.org/dc/terms/> PREFIX omgeo: <http://www.ontotext.com/owlim/geo#> PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT distinct ?link ?title ?lat ?long WHERE{ ?link dct:references ?ref. ?ref rdfs:label ?title. ?ref geo:lat ?lat. ?ref geo:long ?long. ?ref omgeo:within(北西の緯度 北西の経度 南東の緯度 南東の経度 北 経度). } Limit 30
  • 28. SBJSON.h を import JSON Frameworkコーディング #import “SBJSON.h" JSONのテキスト(NSString) のテキスト ~~~~~~~ NSDictionary *json = [text JSONValue]; NSStringの拡張メソッドとして の拡張メソッドとして メソッド 解析(JSONValue) 解析 NSDictionary* results = [[json objectForKey:@"results"] objectForKey:@"bindings"]; 連想配列から取得 連想配列から取得 から for ( NSDictionary* result in results ){ NSString* title = [[result objectForKey:@"title"] objectForKey:@"value"]; NSString* lat = [[result objectForKey:@"lat"] objectForKey:@"value"]; NSString* long = [[result objectForKey:@"long"] objectForKey:@"value"]; NSString* link = [[result objectForKey:@"link"] objectForKey:@"value"]; NSLog(@"%@ : %@ : %@ : %@", title, lat, long, link); }
  • 30. まとめ • iPhoneアプリ「ふぉとぶらり」でのSPARQLの 導入事例を紹介 • 導入がとても簡単 • SPARQLのメリット – 他のSPARQLエンドポイントを公開するプロバイ ダ(DBPedia、LGD)でもほぼ同様のコードを利 用可能 – SPARQLが普及すれば、ユーザが自由にデータ を追加できるようにすることが可能 = 自由度が広がる
  • 31. 謝辞 • iPhoneアプリ「ふぉとぶらり」とLODACの連 携について、情報・システム研究機構 新領域 融合研究センター「LODAC」プロジェクトの皆 様にご協力をいただきました。深く感謝いたし ます。
  • 33. 参考 • ふぉとぶらり(AppStore) – http://itunes.apple.com/jp/app/id404106239?mt=8 • LODAC – http://lod.ac/ – http://lod.ac/sparql (Endpoint) • SPARQL – http://www.asahi-net.or.jp/~ax2s-kmtn/internet/rdf/rdf- sparql-query.html • JSON Framework – https://github.com/stig/json-framework/