フォーマルで行こう
情報のかたちと理解
- InformationはFormを持つ
- 情報を構成する枠組みを知る
- 情報を既存の知識と関連付ける
- エージェントに伝える形、ユーザに伝える形
- ウェブの「型」を身につけよう
- 文学や芸術に“形式”があるように「フォーム」は重要
- ウェブの「型」 → ユニバーサルアクセスとデータ共有・再利用
情報のかたちと名前
- コンピュータと形式と名前
- 形式化:形(枠組み)に名前を与えて共有可能にする
- 形式化された情報はコンピュータ処理が可能
- 情報を抽出する、変換する、推論する…
- 名前とコンテクスト
- おーい、あれ持ってきて(完全にローカルコンテクスト)
- オペラが好きだ(コミュニティによる違い)
- 東京都中央区銀座1丁目(コンテクストに依存しない)
- 名前は共有できてはじめて意味がある
- ウェブページで使われる名前はどんなスコープで通じるか
HTMLと情報のかたち
- 文書のかたちを示すマーク付け
- シンプルな文書構成要素の枠組みとしてのHTML
- 機能としてのかたちを示すマーク付け
- div要素型の役割
- かたちの名前:要素型名
- タグによるマーク付けは、文書情報のかたちと名前を示す
- グローバルに理解できる名前、そうでない名前
- DTDで定義される名前 ←→ 文書作者が付ける名前
XHTMLと情報のかたち
- より汎用性の高い情報のかたち
- HTMLの文法知識を前提としないパース(Well-formedness)
- 汎用ツールでも処理が可能な形式化
- XMLツールで処理ができるからこそXHTML
- オープンソースのXMLツール、処理言語のXMLライブラリ
- IE、Firefox(Opera9が一部)がサポートするXSLT
- 整形式でなければXHTMLじゃない
- 世の中の「XHTML」の半数はill-formed?
- XHTMLくずれはご勘弁
- 終了タグ不在(→ 空要素タグは /> で閉じる)
- 裸の&(→ 常に実体参照。属性値でも)
- 裸の属性値(→ 数字だけでも属性値は引用符で囲む)
※XHTMLの書き方と留意点を参照。
文書情報の枠組みの拡張
- (X)HTMLの基本要素型名で表現できない意味構造
- 文書に含まれる個別情報
- 見出し要素によってアウトラインは与えられるが、文書に含まれる個別情報のタイプを示す手段がない。
- メディア(表現)としての文書の持つ機能の構造
- form要素でコントロール機能は示されるが、メニュー、目次といった機能を明示できない
- 文書に含まれる個別情報
- 拡張の方法
- 基本要素の細分化
- class属性によるサブクラスの生成
- div要素による新しいかたちの表現
- 基本要素の細分化
拡張構造に名前を与える
- 再利用可能な役割:class
- 情報のタイプあるいは役割を示すために名前を与える(普通名詞)
このイベントは<em
class="date"
>2006-07-20</em>に行われる
- 要素の固有名:id
- リソースを直接名指しする(固有名詞)
- 情報表現の主語
<p
id="cssnite10"
>このイベントは…
共有可能なクラス名を考える
- わかりやすいアプローチ:一般に通用しそうな言葉をclass属性値に
- 「date」など(英語がわかる人間なら)誰でも理解できる言葉を用いる
- 普及しているアプリケーションのタグ名を流用する
- たとえばhCalendar
- 情報ブロックとしてのveventクラスと、その中での日付などのクラス
<p
class="vevent"
id="cssnite10"> <spanclass="summary"
>第10回CSSNite</span>が <emclass="dtstart"
>2006-07-20</em>に <spanclass="location"
>銀座アップルストア</span>で行われます。 </p>- hCalendar対応アプリケーションはカレンダー情報を抽出できる
クラス名の共有範囲
- コミュニティを名前のスコープとして持つとき
- 名前付けの約束を共有する(ローカルルール)
- 会社内などコンテンツ管理が可能な範囲では有効なアプローチ
- コミュニティ外では必ずしも正しく理解できない
- microformats“コミュニティ”
- hCalendar、hCardなどの独自の約束を公開
- この場合の名前(クラス名)のスコープは?
- コンピュータは定義がないと処理できない
グローバルな情報共有と形式
- 任意のルールに基づく(特定範囲での)情報交換
- microformatsなどコミュニティ単位の語彙、ウェブサービスごとのAPI
- 特定ルールを前提としない(グローバルな)情報共有の枠組み
- データモデル:RDF、(交換フォーマット:XML, Turtle, JSON、)クエリ言語:SPARQL
RDFとデータのかたち
- トリプルによるリソース表現
- 主語-述語-目的語のトリプルで関係を記述
- URIを用いたグローバルな名前付け
- 対象(ノード)をURIで示す
- 分散記述とグラフの併合が可能
- グローバルな「ネットワーク効果」がもたらされる
- ノードの関係(プロパティ)もURIで示す
- 語彙の明確化と共有、語彙のマッピングが可能
- date → http://purl.org/dc/elements/1.1/date(dc:date)
class属性からRDFへ
- ローカルルールをグローバル化する
- プロファイルURIの利用=ルールの別途定義
<head
profile
="http://purl.org/net/ns/metaprof
">- link要素によるスキーマ指定
<link
rel="schema.dc"
href="http://purl.org/dc/elements/1.1/
" />
- 接頭辞を使ったclass属性値
- link要素で指定した接頭辞を応用
このイベントは<em class="
dc.
date">2006-07-20</em>に行われる- スタイル規則ではエスケープを利用
em.
dc\.
date {color: green}
XSLTによる変換
- クラスの拡張表現を汎用モデルに変換
- ローカルな"date"をDublin Coreの"dc:date"にマッピング
<xsl:template match="*[
@class='date'
]"> <dc:date
> <xsl:value-of select="."/> </dc:date> </xsl:template>
- 機能デザインも意味情報へ
- ページ内リンクは目次データになる
<xsl:template match="h:div[
@class='menu'
]"> <dcterms:tableOfContents
> <xsl:value-of select="."/> </dcterms:tableOfContents> </xsl:template>
変換スタイルシートを示す
- GRDDL
- Gleaning Resource Descriptions from Dialects of Languages
- 様々な言語(で記述された文書)からリソースの記述を拾い集める
- 2006年7月にはW3CにGRDDL作業部会が設置される
- profile属性とlink要素で文書にXSLTを結びつける
- 抽出(変換)のXSLTを明示することで、class属性などのセマンティクスをグローバル化する
- link要素によるXSLTの直接指定
<head
profile="http://www.w3.org/2003/g/data-view"
> <linkrel="transformation"
href="(XSLTのURI)" />- プロファイルにXSLTの指定を埋め込んで、間接的にリンクしても良い
- この場合はlink要素は不要
RDF化されたデータを検索する
- SPARQL: ウェブデータのためのSQL
- RDFで記述されたデータの汎用クエリ(SPARQL Query Language: 2006年4月に勧告候補)
- データのウェブから情報を取り出すためにサービスごとのAPIに依存していては限界がある
- RDFはURIによる語彙とグラフ構造 → グローバルな規模での横断検索が可能
- SPARQLプロトコルと結果フォーマット
- クエリのやり取りの方法をRESTなどで定義(SPARQL Protocol: 2006年4月に勧告候補)
- クエリの結果をXMLやJSONとして取り出す(SPARQL Results XML Format: 2006年4月に勧告候補、SPARQL Results in JSON: 2006年3月にエディタ草案)
- 共通の方法でどんなRDFデータに対しても検索を実行できる
メタデータがあれば…
- RDFデータがある場合
- class属性からメタデータを抽出
- 表形式データからメタデータを取り出す
フォーマルであるということ
- XHTMLとクラス属性による形式化
- 標準XMLツールが利用できる
- さまざまな自動処理への道を開く
- フォーマルな名前
- 取り出したデータの意味・役割を共有できる
- URIを用いたグローバルな名前ならば、誰が利用しても同じ意味を共有できる
- microformatsなどのコミュニティ単位の名前は、適当な変換規則を示して共有化する
- XSLTでURIによる語彙に変換するなど
XHTMLフォーマリズムの課題
- 主語は何なのか
- 文書自体が主語になるケース
- link、meta要素による文書情報
- 文書の「トピック」が主語になる場合
- 多くのメタデータは、文書自身ではなくそのトピックが主語になるはず
- WWW会議の開催地、CSS Niteの開催日とテーマ…
- 文書自体が主語になるケース
- 主語を示すためのアプローチ
- ブロック要素単位で「トピック」を設定する
- locationクラスを含むパラグラフ、イベント情報を持つtr要素…
- まだ個別のXSLTや推論規則が必要
- 汎用的な変換XSLT(例:汎用RDF抽出XSLT)
- RDFaで提案されているabout属性
- ブロック要素単位で「トピック」を設定する
フォーマルなインフォーマリズム
- インフォーマリズムがウェブの強みでもある
- ソフトウェアのインフォーマリズム(オープンソースを学問する by Walt Scacchi)
- ソフトウェア工学では、システム開発のための要求仕様を聞き出し、把握することが必要
- オープンソースのプロジェクトでは、明文化された要求仕様がない代わりに、スレッド化されたEメールによる議論、ソースコードの中にある一連のコメントなどがある
- ソフトウェアのインフォーマリズム(オープンソースを学問する by Walt Scacchi)
- ウェブのインフォーマリズムを生かしつつ
- 無数に存在するインフォーマリズム情報をどうやって共有するか
- 厳密な(非現実的な?)形式化ではなく、現実的なアプローチで
- 最小限のフォーマリズムがインフォーマリズムを生かす
参照先
- 参照したリソース
- Gleaning Resource Descriptions from Dialects of Languages (GRDDL), by Dan Connolly (ed.), , W3C Recommendation
<http://www.w3.org/TR/grddl/> - GRDDL作業部会
<http://www.w3.org/2001/sw/grddl-wg/> - SPARQL Query Language, by Eric Prud'hommeaux and Andy Seaborne (ed.)
<http://www.w3.org/TR/rdf-sparql-query/> - SPARQL Protocol, by Kendall Clark, Lee Feigenbaum and Elias Torres (ed.)
<http://www.w3.org/TR/rdf-sparql-protocol/> - SPARQL Results XML Format, by Dave Beckett and Jeen Broekstra (ed.)
<http://www.w3.org/TR/rdf-sparql-XMLres/> - Serializing SPARQL Query Results in JSON, by Kendall Clark, Lee Feigenbaum and Elias Torres (ed.)
<http://www.w3.org/2001/sw/DataAccess/json-sparql/> - 汎用RDF抽出XSLT
<http://www.kanzaki.com/parts/xh2rdf.xsl> - RDFa Primer, by Ben Adida and Mark Birbeck (ed.)
<http://www.w3.org/TR/xhtml-rdfa-primer/> - オープンソースを学問する, by Paul Festa,
<http://japan.cnet.com/interview/story/0,2000055954,20063817,00.htm>
- Gleaning Resource Descriptions from Dialects of Languages (GRDDL), by Dan Connolly (ed.), , W3C Recommendation