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?

Cookpadの料理レシピオントロジーをSPARQLで検索(料理レシピSPARQL検索1)

0
Posted at

(1)CookpadのmoritoshデータとApache-JenaのSPARQL

料理レシピオントロジーについてのシリーズは、前回の連載「Cookpadレシピオントロジー」の第10回「タートルファイル生成プログラム」までで、タートルファイルで、Cookpadの料理レシピの内容をデータファイルを設定することで、タートルファイル形式のオントロジー(個物)ファイルを生成できるようにしたのであった。データにはCookpadにおけるmoritoshさん(筆者である)のレシピを例にしており、連載10回目までで「鰈(カレイ)の唐揚げ」「シャリアピン牛もも肉ステーキ」「パイナップル」「玄米ご飯ひき肉」の4つのオントロジーデータを作成したのだった。

その後、全116レシピのうち、50レシピまでのオントロジーデータを作成した。そのときに分析とか他のアプリケーションでの応用について考えていたのだが、まずはデータを検索できることが必要と考えたのであった。OWLオントロジー(RDFトリプル)を検索するため問い合わせ言語をSPARQL(SPARQL Protocol and RDF Query Language)という。まずはこれを採り上げなければならないのであった。

SPARQL検索の例を示すために、ここではJena ApacheのSPARQLを利用する。

Apache Jenaは、セマンティック・ウェブとリンクとデータアプリケーションのためのオープンソースのJavaフレームワーク(A free and open source Java framework for building Semantic Web and Linked Data applications.)である。要はRDFやOWLを扱うためのAPIライブラリを提供しているのである。そのJavaクラスファイルにARQというSPARQL検索エンジンが入っており、コマンドラインからもSPARQL検索できる。

ホームページは次である。

筆者は加藤文彦、他『オープンデータ時代の標準Web API SPARQL』(インプレスR&D、2015)も参照した。

Java実行環境が必要である。筆者の環境はWindows 11であり、Javaランタイムはjava version 25 (2025-09-16 LTS)である。

まずはApache Jenaのパッケージをインストールする。ホームページにアクセスし、Downloadボタン(メニュー)があるのでクリックして移動する。Apache Jena Releasesの画面で、Apache Jena Binary Distributionsという見出しがあるので、そこにある apache-jena-5.6.0.zip をダウンロードする。zipを解凍して、そのなかのフォルダをc:\に配置する。たとえば c:\jena を作って 、そこに apache-jena-5.6.0 を配置する。

Windows11の場合、Windowsメニュー(マーク)を右クリックして設定を選択し、システムを選択して、上部の検索枠に”詳細設定”を記入してリターン。システムの詳細設定の表示をクリックする。システムのプロパティウィンドウが出るので、下部の環境変数(N)...をクリックし、システムの環境変数(S)欄で、新規(W)...より変数JENA_HOMEを C:\jena\apache-jena-5.6.0 を設定する。Pathを選択して、編集(I)...をクリックし、 %JENA_HOME%\bat\ を追加する。

コマンドプロンプトを起動して、試しに

> sparql

と入力すれば、No query string or query file という出力が現れ、パスが通っていることが分かるだろう。

なお、このプログラムの出力はUTF-8であり、通常のコマンドプロンプトでは文字化けする。リダイレクトして使えば問題は無いのだが、コマンドプロンプト上で出力を目視確認したいなら、cmd.exeのショートカットを作って、そのプロパティのリンク先を

C:\Windows\System32\cmd.exe /f:on /k "chcp 65001"

と設定すればよい。こちらからコマンドプロンプトを起動すれば、日本語出力が見れる。

試しに cookpad_moritosh_50recipe.ttlをおいてあるフォルダで、t00.rqというテキストファイルを作り、内容を次のように記載してみよう。

# すべてのトリプル
SELECT ?s ?p ?o
WHERE
{
?s ?p ?o
}

コマンドプロンプトで

> sparql --data=cookpad_moritosh_50recipe.ttl --query=t00.rq

と入力すれば次のような結果を得るだろう。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| s                                                                                       | p                                                   | o                                                                                                                                                                                                                                                                                                                                       |
===========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
| <http://www.onto.org/life/food/cookpad_moritosh/石鯛(イシダイ)の刺身_ステップ10>                     | <http://www.onto.org/life/food/recipe#title>        | "ステップ10"@ja                                                                                                                                                                                                                                                                                                                             |
| <http://www.onto.org/life/food/cookpad_moritosh/石鯛(イシダイ)の刺身_ステップ10>                     | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>   | <http://www.w3.org/2002/07/owl#NamedIndividual>                                                                                                                                                                                                                                                                                         |
| <http://www.onto.org/life/food/cookpad_moritosh/石鯛(イシダイ)の刺身_ステップ10>                     | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type>   | <http://www.onto.org/life/food/recipe#ステップ>                                                                                                                                                                                                                                                                                             |
~

ちなみに、sparqlの問い合わせ文t00.rqの内容は、主語?s、述語?p、目的語?oのすべての組み合わせを検索するものである。?s, ?p, ?oが変数であり、SELECTの後に記載することで出力対象になる。

次回から、検索例を示してSPARQL問い合わせ文と出力を解説していく。

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?