RDF技術概要
RDF(Resource Description Framework)は、以前LODでも述べた、ウェブ上にあるリソースのメタデータを技術する枠組みであり、W3Cにより1992年2月に規格化されたものとなる。
RDFの構造としては、トリプルデータのモデルがベースとなる。これは主語(subject)、述語(predicate)、目的後(object)の3つの要素でリソースに関する関係情報を表現したものとなる。(下図にそれらをグラフ表現した物を示す)
このうち主語(subject)は、記述対象であるリソースを指しリソースの識別としてはURI(Uniform Resource Identifier)と呼ばれるURL(Uniform Resource Locator)を拡張した単一のIDを担保する識別を用いる。
述語(predicate)は、主語の特徴や、主語と目的語の関係を示し、目的語(object)は主語と関係のあるものや、述語が特性になっていた場合は、特性の値を示す。
RDF自体はフレームワークでしかなく抽象的な定義にとどまり、実際のデータ構文としては様々なデータ形式が定義されている。以下にそれぞれをexampleと共に示す
まず最初がRDF/XML
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rdf:Description rdf:about="https://en.wikipedia.org/wiki/Tony_Benn"> <dc:title>Tony Benn</dc:title> <dc:publisher>Wikipedia</dc:publisher> </rdf:Description> </rdf:RDF>
次にN-triple
<http://example.org/#spiderman>
<http://www.perceive.net/schemas/relationship/enemyOf>
<http://example.org/#green-goblin> .
Notation3
@prefix dc: <http://purl.org/dc/elements/1.1/>. <https://en.wikipedia.org/wiki/Tony_Benn> dc:title "Tony Benn"; dc:publisher "Wikipedia".
TTL
@base <http://example.org/> .
@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 rel: <http://www.perceive.net/schemas/relationship/> .
<#green-goblin>
rel:enemyOf <#spiderman> ;
a foaf:Person ; # マーベル・ユニバースのコンテキストで
foaf:name "Green Goblin" .
<#spiderman>
rel:enemyOf <#green-goblin> ;
a foaf:Person ;
foaf:name "Spiderman", "Человек-паук"@ru .
JSON-LD
{ "@context": "https://json-ld.org/contexts/person.jsonld", "@id": "http://dbpedia.org/resource/John_Lennon", "name": "John Lennon", "born": "1940-10-09", "spouse": "http://dbpedia.org/resource/Cynthia_Lennon" }
人間が見て分かりやすいデータとしては、TTL、Webアプリとの親和性で考えるのであればJASON-LDを使う選択肢もある。
更に、オントロジーはある瞬間のスナップショットの概念のモデルであると言え、概念の時間変化はあまり考慮されていないが、現実の世界のデータは時間変化を考慮しないといけないケースが多々ある。(例えば辞書的なデータとしてオントロジーを使った場合、過去の辞書と現在の辞書を跨いで処理をしたいようなケース)そのため、何らかの時間的構造を取り入れる工夫をする必要がある。
それらに対するための最もシンプルな方法は、トリプル構造をそのまま利用し、name sapce部分で違った時間軸を表すアプローチとなる。この手法を用いることである程度の時間軸の情報をハンドリングすることが可能となるが(例えば辞書のバージョン推移のようなもの)、複雑な時間の推移のハンドリングは困難となる。
これに対して、例えばN-tripleでは、以下に示すように4番目の要素を加えることが可能となる。
<http://example.org/bob#me> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> <http://example.org/bob> . <http://example.org/bob#me> <http://xmlns.com/foaf/0.1/knows> <http://example.org/alice#me> <http://example.org/bob> .
ここで最初の行は前述の名前空間に相当するデータとなる。このような構造になっているため、トリプルでの名前空間のハンドリングと比較して、独立したノードのデータとなっているため、よりフレキシブルに時間経過のモデルを表現することができる。
次回は、このRDFデータを実際にハンドリングするデータベースであるRDFストアとその上で動作するクエリ体系であるSPARQLについて述べる。
コメント
[…] 前回、LODを実現するRDFデータのデータモデルと具体的なデータ構造について述べた。今回はそれらをハンドリングするデータベースであるRDFストアと、RDFストアからデータを抽出するクエリ体系であるSPARQLについて述べる。 […]
[…] Semantic Web技術の要素であるRDFやRDFデータベース、オントロジーに関しては別途述べるが、今回はこれらの論文の中で発表された内容について紹介する。 […]
[…] 本書では主に、RDF、RDFS、OWL等のmodeling言語の解説をそれらを使ったオントロジーのモデリングについて、言語の解説と実際のモデリング手法のステップについて述べられている。目次は以下のようになる。 […]
[…] Semantic MediaWikiはこのMediaWIkiの中にRDF(Resource Description Framework)と呼ばれる、ウェブ上にあるリソースのメタデータを記述するための枠組みを埋め込むことで、他のwebシステムとシームレスで接続可能な知識管理システムに変えることができるシステムである。 […]
[…] RDF技術概要 […]