XLWrapについてのご紹介

1,077 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,077
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

XLWrapについてのご紹介

  1. 1. XLWrapに関するご紹介<br />筑波大学大学院 システム情報工学研究科<br />コンピュータサイエンス専攻 北川データ工学研究室大澤 昇平<br />1<br />2011/1/22<br />この資料に関するお問合せ:shohei.ohsawa@kde.cs.tsukuba.ac.jp<br />
  2. 2. アジェンダ<br />XLWrapの全体像・機能<br />概要:XLWrapとは<br />マッピングルール<br />サポートしている機能<br />HTTPフロントエンド<br />XLWrapのマッピングルールの記述<br />目標<br />マッピングルールの内容<br />手順<br />実行結果<br />まとめ・デモ・質疑応答<br />2<br />
  3. 3. アジェンダ<br />XLWrapの全体像・機能<br />概要:XLWrapとは<br />マッピングルール<br />サポートしている機能<br />HTTPフロントエンド<br />XLWrapのマッピングルールの記述<br />目標<br />マッピングルールの内容<br />手順<br />実行結果<br />まとめ・デモ・質疑応答<br />3<br />
  4. 4. 概要: XLWrapとは<br />XLWrap とは、スプレッドシートで表現されているデータを RDFグラフに変換するソフトウェアです。<br />HTTP サーバが内蔵されているため、SPARQLエンドポイントとして機能する他、リモートにあるスプレッドシートへのアクセスが可能であるため、ウェブ上に公開されている Excel ファイルなどを、シームレスにラッピングすることができます。<br />XLWrapサーバのバックエンド<br />マッピングルール(運営者が記述)<br />マッピング<br />ルール<br />マッピング<br />ルール<br />トリプルストア(Jena)<br />XLWrapデータ変換器<br />スプレッドシート(Excel, OOCalc, CSV)<br />マッピング<br />ルール<br />変換された<br />RDFグラフ<br />格納<br />変換<br />マッピング<br />ルール<br />XLWrapサーバの HTTP フロントエンド<br />問合せ<br />問合せ<br />SPARQL<br />エンドポイント<br />Snorqlブラウザ<br />運営者用ダッシュボード<br />4<br />
  5. 5. マッピングルール 1/2<br />XLWrapでは、ユーザが手動でマッピングルールを記述します。マッピングルールは、原則的に各スプレッドシートに対し、一つ記述します。<br />マッピングルールでは、変換先RDFグラフにおいて、各リソース/リテラルの値が、変換元スプレッドシートのどのセルに対応するかを記述していきます。<br />5<br />名前空間についても、マッピングルール内で定義できます<br />変換先RDFグラフ<br />398<br />ex:itemsSold<br />ex:Austria_Product1<br />ex:revenue<br />9154.00<br />ノードの値が必ずセルと対応している必要はありません<br />ex:category<br />このように、複数セルの値を結合することもできます<br />“laptop PC”<br />変換元スプレッドシート<br />
  6. 6. マッピングルール 2/2<br />XLWrapでは、マッピングルールにおいて、「変換の繰り返し」を定義することができます。<br />マッピングルールでは、変換元スプレッドシートを「行」「列」「シート」を軸に持つ三次元のデータと捉え、それぞれの軸についての繰り返し方法を定義します。<br />変換元スプレッドシート<br />Sheet1<br />行の繰り返し<br />Sheet2<br />列の繰り返し<br />シートの繰り返し<br />6<br />
  7. 7. サポートしている機能<br />サポートしているスプレッドシートの形式:Excel, OpenOffice Calc, CSV<br />名前空間<br />変換先RDFグラフの定義に、名前空間を使うことができます<br />コンスタント・グラフ<br />変換先RDFグラフの定義に、入力元のExcelデータの値によらない、コンスタントなグラフを加えることができます。<br />セル値の演算<br />算術演算(+, -, *, /)<br />文字列の結合演算<br />比較演算(<, >, 等)<br />論理演算(&&, ||)<br />URLエンコード<br />DBPediaへのマッピング<br />例: A1=“Australia” の場合、DBP_LOCATION(A1) と書くと、dbpedia:Australiaと等価な意味になる<br />ユーザ定義関数<br />7<br />
  8. 8. HTTPフロントエンド 1/3<br />8<br />XLWrapには、HTTPフロントエンドとして、「SPARQLエンドポイント」 「Snorqlブラウザ」 「運営者用ダッシュボード」などの機能が搭載されています。<br />運営者用ダッシュボード(トップページ)<br />XLWrapを起動し、http://localhost:8900/(デフォルト設定)へアクセスしたときに表示されるページ。SPARQLエンドポイント、Snorqlブラウザへのリンクなどが見える。<br />
  9. 9. HTTPフロントエンド 2/3<br />9<br />運営者用ダッシュボード(ステータス情報)<br />スプレッドシートが正しく変換されると、Wrapped spreadsheets in cacheという項目に表示される。<br />
  10. 10. HTTPフロントエンド 3/3<br />10<br />Snorqlブラウザ<br />写真は変換済みのRDFグラフに対し、すべてのトリプルを出力するような問合せを実行したもの。<br />
  11. 11. アジェンダ<br />XLWrapの全体像・機能<br />概要:XLWrapとは<br />マッピングルール<br />サポートしている機能<br />HTTPフロントエンド<br />XLWrapのマッピングルールの記述<br />目標<br />マッピングルールの内容<br />手順<br />実行結果<br />まとめ・デモ・質疑応答<br />11<br />
  12. 12. 目標 1/2<br />このような Excel のデータを、<br />12<br />Excel データ<br />統計局 日本の統計 第1章 国土・気象 1-1 国土状況 より <br />http://www.stat.go.jp/data/nihon/01.htm<br />http://www.stat.go.jp/data/nihon/zuhyou/01syo/n0100100.xls(直リンク)<br />
  13. 13. 目標 2/2<br />13<br />RDFデータ(一部)<br />83,457<br />jpstat:value<br />jpstat:Region<br />0.2208<br />jpstat:percentage<br />jpstat:area<br />509<br />rdf:type<br />jpstat:total<br />jpstat:Region_北海道<br />14<br />jpstat:small<br />jpstat:middle<br />2<br />jpstat:islands<br />jpstat:large<br />6<br />jpstat:tiny<br />487<br />このように変換するのが目標です。<br />
  14. 14. マッピングルールの内容<br />14<br />tohkei1.trig<br />接頭辞<br /> 1 @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .<br /> 2 @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .<br /> 3 @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .<br /> 4 @prefix owl: <http://www.w3.org/2002/07/owl#> .<br /> 5 @prefix foaf: <http://xmlns.com/foaf/0.1/> .<br /> 6 @prefix ex: <http://example.org/> .<br /> 7 @prefix dc: <http://purl.org/dc/elements/1.1/> .<br /> 8 <br /> 9 @prefix xl: <http://purl.org/NET/xlwrap#> .<br /> 10 @prefix jpstat: <http://www.stat.go.jp/rdf#> .<br /> 11 <br /> 12 <br /> 13 { [] a xl:Mapping ;<br /> 14 xl:offline "false"^^xsd:boolean ;<br /> 15 <br /> 16 xl:template [<br /> 17 xl:fileName "mappings/files/n0100100.xls" ;<br /> 18 xl:sheetNumber "0" ;<br /> 19 xl:templateGraph :Region ;<br /> 20 xl:transform [<br /> 21 a rdf:Seq ;<br /> 22 rdf:_1 [<br /> 23 a xl:RowShift ;<br /> 24 xl:restriction "A9:H9" ;<br /> 25 xl:breakCondition "ALLEMPTY(A9:H9)" ;<br /> 26 xl:steps "1" ;<br /> 27 ] ;<br /> 28 ]<br /> 29 ] .<br /> 30 }<br /> 31 <br /> 32 :Region {<br /> 33 [ xl:uri "'http://www.stat.go.jp/rdf#Region_' & REMOVE_WHITESPACE(A9)"^^xl:Expr ] a jpstat:Region ;<br /> 34 jpstat:area [ jpstat:value "C9"^^xl:Expr; jpstat:percentage "D9 / 100"^^xl:Expr];<br /> 35 jpstat:islands [<br /> 36 jpstat:total "E9"^^xl:Expr;<br /> 37 jpstat:tiny "E9 - F9 - G9 - H9"^^xl:Expr;<br /> 38 jpstat:small "F9"^^xl:Expr;<br /> 39 jpstat:middle "G9"^^xl:Expr;<br /> 40 jpstat:large "H9"^^xl:Expr<br /> 41 ].<br /> 42 } <br />テンプレートグラフ<br />メタ情報<br />記述の手順<br />接頭辞の記述<br />繰り返し<br />メタ情報の記述<br />テンプレートグラフの記述<br />繰り返しの記述<br />
  15. 15. 手順:接頭辞の記述<br />15<br />接頭辞の記述<br />@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .<br />@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .<br />@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .<br />@prefix owl: <http://www.w3.org/2002/07/owl#> . <br />@prefix foaf: <http://xmlns.com/foaf/0.1/> .<br />@prefix ex: <http://example.org/> .<br />@prefix dc: <http://purl.org/dc/elements/1.1/> .<br />@prefix xl: <http://purl.org/NET/xlwrap#> .<br />@prefix jpstat: <http://www.stat.go.jp/rdf#> .<br />XLWrap用の接頭辞<br />(XLWrap 内で既定)<br />統計局用の接頭辞<br />(私が決定)<br />
  16. 16. 手順:メタ情報の記述<br />16<br />メタ情報の記述<br />{ [] a xl:Mapping ;<br />xl:offline "false"^^xsd:boolean ;<br />xl:template [<br />xl:fileName "mappings/files/n0100100.xls" ;<br />xl:sheetNumber "0" ;<br />xl:templateGraph:Region ;<br />xl:transform [<br /> a rdf:Seq ;<br />      <br /> ] <br /> ] . <br />}<br />ファイル名<br />シート番号<br />テンプレートグラフの名前(テンプレートグラフについては次のページで解説)<br />ここの中身(繰り返しの記述)に関しては p.19 で解説<br />
  17. 17. 手順:テンプレートグラフの記述 1/2<br />17<br />変換先RDFグラフ<br />83,457<br />jpstat:value<br />jpstat:Region<br />0.2208<br />jpstat:percentage<br />jpstat:area<br />509<br />rdf:type<br />jpstat:total<br />jpstat:Region_北海道<br />14<br />jpstat:small<br />jpstat:middle<br />2<br />jpstat:islands<br />jpstat:large<br />6<br />jpstat:tiny<br />(=509 - 14 - 2 - 6)<br />487<br />変換元Excelシート<br />
  18. 18. 手順:テンプレートグラフの記述 2/2<br />18<br />:Region {<br /> [ xl:uri "'http://www.stat.go.jp/rdf#Region_' & REMOVE_WHITESPACE(A9)"^^xl:Expr ]<br />  a jpstat:Region ;<br />jpstat:area [ jpstat:value "C9"^^xl:Expr; jpstat:percentage "D9 / 100"^^xl:Expr];<br />jpstat:islands [<br />jpstat:total "E9"^^xl:Expr;<br />jpstat:small "F9"^^xl:Expr;<br />jpstat:middle "G9"^^xl:Expr;<br />jpstat:large "H9"^^xl:Expr<br />jpstat:tiny "E9 - F9 - G9 - H9"^^xl:Expr;<br /> ].<br />}<br />マッピングルール<br />変換元Excelシート<br />
  19. 19. 手順:繰り返しの記述<br />マッピングルール<br />xl:transform [<br /> a rdf:Seq ;<br /> rdf:_1 [<br /> a xl:RowShift ;<br />xl:restriction "A9:H9" ;<br />xl:breakCondition "ALLEMPTY(A9:H9)" ;<br />xl:steps "1" ;<br /> ] ;<br /> ]<br />RowShiftが適用される最初の範囲<br />停止条件<br />変換元Excelシート<br />RowShift<br />(停止条件)<br />すべてのセルが<br />空だったら停止<br />
  20. 20. 実行結果 1/2<br />20<br />SELECT DISTINCT * WHERE {<br /> ?s ?p ?o<br />}<br />次のページへ続く<br />
  21. 21. 実行結果 2/2<br />21<br />
  22. 22. アジェンダ<br />XLWrapの全体像・機能<br />概要:XLWrapとは<br />マッピングルール<br />サポートしている機能<br />HTTPフロントエンド<br />XLWrapのマッピングルールの記述<br />目標<br />マッピングルールの内容<br />手順<br />実行結果<br />まとめ・デモ・質疑応答<br />22<br />
  23. 23. まとめ<br />今回は、Excel形式のデータを、RDFに変換することができるXLWrapを紹介しました。<br />前半では、XLWrapの全体像、機能についてご説明しました。<br />後半では、マッピングルールの記述方法についてご説明しました。<br />現在、内部のデータを Excel で管理している事業者は多いと予想。->今後既存のデータを Linked Data化する過程で、XLWrapの需要が高まってくるのではないかと考えられます。<br />23<br />
  24. 24. デモ<br />24<br />
  25. 25. 質疑応答<br />25<br />
  26. 26. 所感<br />XLWrapは日本語(UTF-8)も十分いける<br />セルの値が 汚い(例:余計なスペースが入っている)場合、専用の処理が必要。<br />今回は「北   海  道」のように間にスペースが入っていたので、ユーザ定義関数 REMOVE_WHITESPACE を作成して対処する必要があった。<br />また、XLWrapの場合、定義済みの関数が少なく、若干多様なセルの値に対応しにくいかもしれない。<br />例えば “100円” など、単位付きで直接セルに書き込まれているデータから、100 という数字を取りだすことが難しい。<br />26<br />
  27. 27. 付録:ユーザ定義関数 1/2<br />E_FuncREMOVE_WHITESPACE.java (1/2)<br />27<br />package at.jku.xlwrap.map.expr.func.text;<br />import at.jku.xlwrap.common.XLWrapException;<br />import at.jku.xlwrap.exec.ExecutionContext;<br />import at.jku.xlwrap.map.expr.TypeCast;<br />import at.jku.xlwrap.map.expr.XLExpr;<br />import at.jku.xlwrap.map.expr.func.XLExprFunction;<br />import at.jku.xlwrap.map.expr.val.E_String;<br />import at.jku.xlwrap.map.expr.val.XLExprValue;<br />import at.jku.xlwrap.spreadsheet.XLWrapEOFException;<br />/**<br /> * @author shoheiohsawa<br /> *<br /> */<br />public class E_FuncREMOVE_WHITESPACE extends XLExprFunction {<br /> /**<br /> * default constructor <br /> */<br /> public E_FuncREMOVE_WHITESPACE() {<br /> }<br /> public E_FuncREMOVE_WHITESPACE(XLExpr string) {<br />args.add(string);<br /> }<br />
  28. 28. 付録:ユーザ定義関数 2/2<br />E_FuncREMOVE_WHITESPACE.java (2/2)<br />28<br /> private String removeWhitespace(String S) {<br /> return S.replace(" ", "").replace(" ", "").replace("n", "").replace("t", "").replace("r", "");<br /> }<br /> @Override<br /> public XLExprValue<?> eval(ExecutionContext context) throws XLWrapException, XLWrapEOFException {<br />XLExprValue<?> v1 = args.get(0).eval(context);<br /> if (v1 == null)<br /> return null;<br /> else<br /> return new E_String(removeWhitespace(TypeCast.toString(v1)));<br /> }<br />}<br />このファイルを作って src/at/jku/xlwrap/map/expr/func/text 以下に作成。その後再コンパイル。<br />
  29. 29. LOD.ACへの導入に必要な作業<br />現行システムとの連携<br />XLWrapと現行システムで同じトリプルストアを使ってしまうと、色々不都合が生じる可能性があります。たとえば、XLWrapではラッピングしている元の Excel データが変わった場合、以前までのトリプル列を消去しますが、これにより現行システムのデータが消去されてしまう可能性があります。<br />解決策としては、LAN 内で XLWrapサーバを稼働させ、現行システムから XLWrapのSPARQLエンドポイントを使うという方法が考えられます。<br />マッピングルールの作成<br />XLWrapのマッピングルールを作成する際には、書き方を覚える必要があります。*書き方は本家ページで解説されています:http://xlwrap.sourceforge.net/<br />また、Excelシートを各美術館様にご提出頂いた後でもマッピングルールを記述することは可能ですが、マッピングルールを書く労力が減らせるように、Excel シートの仕様を先に定義しておいた方が良いかと思います。<br />29<br />
  30. 30. 参考資料<br />XLWrap自体について<br />http://xlwrap.sourceforge.net/<br />XLWrapの本家ページです。<br />Andreas Langegger, Wolfram Wöß (2009): XLWrap – Querying and Integrating Arbitrary Spreadsheets with SPARQL. In Proceedings of the 8th International Semantic Web Conference (ISWC2009), Washington D.C. LNCS 5823, Springer, 2009.<br />XLWrapに関する論文です。システムのコンセプトや、変換の方法などについて説明してあります。<br />マッピングルールについて<br />http://xlwrap.sourceforge.net/patterns.html<br /> マッピングルールの書き方について説明してあります。<br />http://www4.wiwiss.fu-berlin.de/bizer/TriG/<br />マッピングルールを記述する際のデータ形式 TriGに関する仕様書です。<br />30<br />

×