19. 推論2006.05.23 株式会社四次元データ 中井隆史
Jena 19章 推論
19.1. 推論機能の概要推論は、あるの RDF のデータには直接含まれてい情報を、 オントロジやスキーマといった規則に従って発見する処理です。 Jena には、オントロジなどのルールに基づく推論が実装されています。 Jenaの推論でもっとも重要なものは com.hp.hpl.jena.rdf.model.InfModel という Model のサブインタフェースです。 生成段階で推論が行われるため、InfModel のインスタンスは、推論実行後のモデルを表します。 推論によって情報の発見を行うため、これには推論の元となったモデルには、含まれなかったステートメントも含まれます。 元のモデルに存在したステートメントと同様に操作したり、検索を行ったりすることができます。 推論を行う方法はいくつかありますが、 ここでは com.hp.hpl.jena.reasoner.ReasonerRegistry と com.hp.hpl.jena.reasoner.Reasoner を使用する方法を説明します。 19.2. Reasoner の役割Reasoner インタフェースを実装したクラスには、 どのような規則に従って推論を行うかの情報が入れられます。 実際に推論が行われるときには、Reasoner の情報に沿ってスキーマ、オントロジが解釈され新たな情報の発見が行われます。 独自の規則を定義することもできますが、 いくつかの有用な Reasoner は実装されていますので、それを利用することができます。 これらの Reasoner は ReasonerRegistry クラスを利用することで取得することができます。 例えば次のようなものがあります。 ReasonerRegistryから得られるReasonerの例
OWL の Reasoner については RDFS による推論の機能も含まれています。 現在のところ RDFS、OWL などは完全に実装されているわけではありませんが、 基本的な推論は十分行うことが可能です。 Reasoner を実際に ReasonerRegistry から取得すると次のようになります。 Reasoner reasoner = ReasonerRegistry.getTransitiveReasoner() また RDFS や OWL に関する Reasoner は、一般にオントロジやスキーマとともに使用します。 ある特定のオントロジやスキーマについてバインドを行い専用の Reasoner を作ることもできます。 そのためには Reasoner の bindSchema(Model model) メソッドを使用します。 引数にはオントロジやスキーマの情報の入ったモデルを渡します。 例えば次のように行います。 Model schema = FileManager.get().loadModel("file:data/RDFS.rdf");
Reasoner rdfsReasoner = ReasonerRegistry.getRDFSSimpleReasoner();
Reasoner reasoner = rdfsReasoner.bindSchema(schema);
注意が必要となるのは bindSchema(Model model) は新たにオブジェクトが生成されて戻されることです。 上の例で言えば reasoner は schema についてバインドされています。 一方で rdfsReasoner はバインドされません。 |
![]()
![]()
|