0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【owlready2】(2)Python言語におけるOWLオントロジーへのアクセス

Posted at

2.Python言語におけるOWLオントロジーへのアクセス

2.1 インポート

>>> from owlready2 import *

とすればよい。関数名の重複が気になるなら、

>>> import owlready2 as or2

とでもして、

>>> or2.func()

として、owlready2の関数であることを明らかにすればよい。numpyをよくnpと扱うようなものである。

2.2 オントロジーのロード(読み込み)

Pythonのオブジェクトとして読み込む。
インターネットにあるIRI(つまりアドレス)を読み込む場合、直接IRIを指定する。

>>> onto = get_ontology('http://lesfleursdunormal.fr/static/_downloads/bacteria.owl').load()

ファイルの場合、

>>> onto = get_ontology('c:\\owlready\\bacteria.owl').load()

である。ウィンドウズの場合、フォルダの区切りは\マークであり、Pythonの特殊文字として'\'と表す。Linux(Unix)やMacではスラッシュ(/)となる。
同じフォルダならば、ファイル名だけでよい。

ちなみにbacteria.owlは微生物のバクテリア(細菌)のオントロジーであり、これは著者の取り組みによるのだろう。作成されたオントロジーのうちで、内容的にも規模的にも最大の分野は医薬・生化学分野であろう。

ファイル形式はRDF/XML形式かタートル形式(N-Triples)である。OWL/XML形式というのはOWL2言語であつかうオントロジー語彙(予約語)を用いるが、書式自体はXMLである。OWL2は関数型表記法が利用でき、記述が容易になると考えられるが、XML形式であるなら、予約語が増えるだけで、取り扱いの負担が増えるためか、あまり利用されていないのではなかろうか。protégéで出力すると、多少ファイル容量を小さくできる。

2.3 インポートされたオントロジー

OWLファイルは、他のオントロジー(インターネット上のIRIやOWLファイル)をインポートして、その記述内容を利用して記述できる。

いまt001(https://www.test.org/test/t001 、ファイルはt001.rdf)オントロジーをt002(https://www.test.org/test/t002 、ファイルはt002.rdf)オントロジーがインポートしているとする。このとき次のようにすれば、インポートしているオントロジーにアクセスできる。

>>> from owlready2 import *
>>> onto1 = get_ontology('t001.rdf').load()
>>> onto2 = get_ontology('t002.rdf').load()
>>> onto2.imported_ontologies
[get_ontology("https://www.test.org/test/t001#")]
>>> onto2.imported_ontologies[0]
get_ontology("https://www.test.org/test/t001#")
>>> list(onto2.imported_ontologies[0].classes())
[t001.A, t001.C, t001.B]

これを、t001を読み込まないで次のようにするとエラーとなるので、インポートするオントロジーは事前に読み込んでおかなければならない。

>>> from owlready2 import *
>>> onto2 = get_ontology('t002.rdf').load()

Traceback (most recent call last):
~
socket.gaierror: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:
~
owlready2.base.OwlReadyOntologyParsingError: Cannot download 'https://www.test.org/test/t001/'!

2.4 オントロジーの内容の一覧化

オントロジーに含まれるエンティティ(entity、実在)をたどる方法がある。次の表の通りである。

表:エンティティの取得(巡回)メソッド
entity_traverse.png

表に示したメソッドは生成子(generator、ジェネレータ)を返す。

>>> for c in onto2.classes(): print(c.name)
AA
D
BB
>>> onto2.classes()
<generator object _GraphManager.classes at 0x00000215EC6B5700>

また、前節のimported_ontologiesの例でリスト(list())をとっていたのは、このためであった。

>>> onto2.imported_ontologies[0].classes()
<generator object _GraphManager.classes at 0x00000215EC6B4C70>
>>> list(onto2.imported_ontologies[0].classes())
[t001.A, t001.C, t001.B]
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?