Webアプリ開発エンジニアのための技術情報サイト「テックスコア」

18. オントロジAPI

2006.05.17 株式会社四次元データ 中井隆史

18.1. Jena におけるオントロジの扱い方

Jena にはオントロジを操作する方法が 2 通りあります。 1つ目は単純に OWL や DAML+OIL などの語彙を使ったRDFデータとして扱う方法です。 com.hp.hpl.jena.vocabulary.OWL や com.hp.hpl.jena.vocabulary.DAML_OIL などを利用すれば オントロジの語彙を簡単に使用できます。

一方でオントロジを専用に処理するための機能も存在します。 この場合は Model のサブインターフェースである com.hp.hpl.jena.ontology.OntModel が中心になります。 com.hp.hpl.jena.ontology.OntProperty、com.hp.hpl.jena.ontology.OntResource などオントロジの概念に応じた インターフェースが用意されているので、これらを使用して処理を行います。

下の例は OWL で記述されたオントロジの一例です。名前空間の宣言は省略しています。 簡単に言い換えをすると「男は人ではあるけれど女ではない」を表しています。 このオントロジを出力するコードを見てみましょう。

オントロジ例:男(Men)は女(Women)と共通部分を持たず、人(Person)のサブクラスである。
<?xml version="1.0" ?>
<rdf:RDF……>
  <owl:Class rdf:about="http://www.4dd.co.jp/example/Men">
    <rdfs:subClassOf>
      <owl:Class rdf:about="http://www.4dd.co.jp/example/Person"/>
    </rdfs:subClassOf>
    <owl:disjointWith>
      <owl:Class rdf:about="http://www.4dd.co.jp/example/Women"/>
    </owl:disjointWith>
  </owl:Class>
</rdf:RDF>
サンプルコード:OntModel を使ってオントロジを処理
1:  import com.hp.hpl.jena.ontology.OntClass;
2:  import com.hp.hpl.jena.ontology.OntModel;
3:  import com.hp.hpl.jena.rdf.model.ModelFactory;
4:  
5:  public class OntlogyAPISample {
6:    public static void main(String[] args) {
7:      OntModel om = ModelFactory.createOntologyModel();
8:  
9:      OntClass men =
10:         om.createClass("http://www.4dd.co.jp/example/Men");
11:     OntClass person =
12:         om.createClass("http://www.4dd.co.jp/example/Person");
13:     OntClass women = 
14:         om.createClass("http://www.4dd.co.jp/example/Women");
15: 
16:     person.addSubClass(men);
17:     men.addDisjointWith(women);
18: 
19:     om.write(System.out, "RDF/XML-ABBREV");
20:   }
21: }

7行目で OntModel を生成しています。 9-14行目で生成されている OntClass はオントロジのクラスの概念を表します。 16、17行目では、OntClass のメソッドを利用して rdfs:subClassOf や owl:disjointWith の関係をOntModelに追加しています。

OntModel を使用する利点は、各インターフェースやそのメソッドを使用することで、 オントロジ言語としてどの言語を使っていても操作が変えずに済むことです。 また OntModel や OntClass などは前章までに登場したインターフェースのサブインターフェースが大半なため、 RDFとしての操作方法を併用することも可能です。

18.2. OntModel と言語の関係

18.1.のサンプルコードのように、OntModel取得時に特に仕様を指定しなかった場合、 デフォルトで OWL Full に関連付けがされます。 オントロジ言語を指定したい場合には、次のように引数をとります。

OntModel om = ModelFactory
      .createOntologyModel( ProfileRegistry.OWL_LITE_LANG );

上で使用している com.hp.hpl.jena.ontology.ProfileRegistry は、 Jenaで使用可能なオントロジ言語の URI を static フィールドとして持っています。 ProfileRegistry を使用するとこで簡単にオントロジ言語の指定ができます。 Jena で使用可能なオントロジ言語とその URI は次のようなものです。

ProfileRegistry のフィールドとオントロジ言語の対応

言語 ProfileRegistryのフィールド名 URI
RDFS ProfileRegistry.RDFS_LANG http://www.w3.org/2000/01/rdf-schema#
DAML+OIL ProfileRegistry.DAML_LANG http://www.daml.org/2001/03/daml+oil#
OWL Full ProfileRegistry.OWL_LANG http://www.w3.org/2002/07/owl#
OWL DL ProfileRegistry.OWL_DL_LANG http://www.w3.org/TR/owl-features/#term_OWLDL
OWL Lite ProfileRegistry.OWL_LITE_LANG http://www.w3.org/TR/owl-features/#term_OWLLite

この章で紹介した方法を使用すると言語によらず操作方法が同じになります。 一方で各言語で表現力に差があり、使用できる概念が異なるため言語に対する知識は必要になります。



前のページへ TECHSCOREのTOPページへ 次のページへ
TECHSCORE PR
PR
PR
PR
PR
PR

techscore(トップページへ)
TECHSCORE書店
TECHSCOREトップページJavaSQLXMLリッチクライアントモデリングセマンティックWebその他技術Tuigwaa