SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Java/JRuby開発者のためのセマンティックWeb入門

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (1.7 MB)

RDFSモデリングにおけるクラスの使用

 読者は、これまで紹介したいずれの例でもRDFSのプロパティは扱っているが、RDFSのクラスを扱っていないことに驚かれたかもしれません。既に述べたように、RDFSのプロパティとRDFSのクラスは、プロパティがRDFSのクラスの属性(すなわちクラス変数)の定義に使われることはないという意味で、直交しています。クラスを用いてその場限りのやり方でプロパティを追加して使うにせよ、クラスを拡張するにせよ、プロパティはいつでも使用できます。次の例では、RDFSモデリングにおけるクラスの使い方を示すために、N3ファイル「rdf_files/class_example.n3」を使用しています。

@prefix kb:  <http://knowledgebooks.com/ontology#> .
@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/#> .

foaf:Person rdfs:subClassOf foaf:Agent .
kb:KnowledgeEngineer rdfs:subClassOf foaf:Person .

<http://www.markwatson.com/index.rdf> a kb:KnowledgeEngineer .

 なお、上記の述語における略号のaは、主語であるURIがクラスkb:KnowledgeEngineerのメンバであることを意味します。次のSPARQLクエリでは、目的語がfoaf:Agentと一致するトリプルのすべての主語と述語が出力されます。

require "java"
require "sesame_wrapper.jar"
require 'pp'

include_class "TripleStoreSesameManager"
include_class "DefaultSparqlResultHandler"

tsm = TripleStoreSesameManager.new

tsm.loadRDF("rdf_files/class_example.n3")

sparql_query =
   PREFIX foaf:  <http://xmlns.com/foaf/0.1/#>
   SELECT ?subject ?predicate WHERE { ?subject ?predicate foaf:Agent . }";

tsm.doSparqlQuery(sparql_query, DefaultSparqlResultHandler.new) 

 リスト7は、このサンプルの実行結果です。これには、いくつか興味深い点があります。

  • 主語であるURI <http://knowledgebooks.com/ontology#KnowledgeEngineer>の型はfoaf:Agentです。論理的な推論によって、筆者のURIの型はkb:KnowledgeEngineerからfoaf:Personを経てfoaf:Agentとなります。
  • foaf:Personと<http://knowledgebooks.com/ontology#KnowledgeEngineer>はどちらもfoaf:Agent型です。

 Sesame(あるいは、その他のRDFトリプルストア)において推論を通じてアサートされるトリプルを調べるために、この例のような「適用範囲の広い」SPARQLクエリを作成するのは、多くの場合、面白くもあり、また有益でもあります。

リスト7 SPARQLクエリの出力結果。このSPARQLクエリでは、目的語がfoaf:Agentと一致するトリプルのすべての主語と述語が出力されます
next result: |http://xmlns.com/foaf/0.1/#Person|                      |http://www.w3.org/2000/01/rdf-schema#subClassOf|	   . 
next result: |http://knowledgebooks.com/ontology#KnowledgeEngineer|   |http://www.w3.org/2000/01/rdf-schema#subClassOf|	   . 
next result: |http://www.markwatson.com/foaf.rdf/|                    |http://www.w3.org/1999/02/22-rdf-syntax-ns#type|	   . 
next result: |http://xmlns.com/foaf/0.1/#Agent|                       |http://www.w3.org/2000/01/rdf-schema#subClassOf|	   . 

今後の展開

 さて、JavaとJRubyを用いてセマンティックWebの機能を実現する方法を見てきたわけですが、本稿のサンプルに倣ってコードを書けば、読者独自のセマンティックWebプログラムを作ることができるでしょう。

 独自のセマンティックWebプロジェクトを開始するに当たって、次の2つの指針に従うことをお勧めします。

  • 独自のデータソースをRDFとして公開し、その上で、データの消費者にRDFSと、初期の導入を容易にするためのサンプルのSPARQLクエリを提供すること。
  • RDFデータのソースとして、どのようなものが自分のWebアプリケーションの価値を高めるかを確認すること。SPARQLクエリを用いて、自分の用途に合ったデータを収集するとよいでしょう。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Mark Watson(Mark Watson)

Javaコンサルタント。Java、人工知能、C++、知的エージェントに関する書籍を14冊執筆している。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3163 2008/11/04 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング