2025年10月17日金曜日

Protégé DesktopにOracle Pluginを組み込む

Stanford大学が開発しているオープン・ソースのオントロジー・エディタProtégéのデスクトップ版Protégé Desktopに、Oracleに接続するプラグインを組み込んでみます。

OracleのプラグインはOracle JDK 17以降で動作します。Protégé Desktopに含まれているOpenJDK 11のJREでは動作しません。そのため、Protégé Desktopのプラットフォーム非依存版を使用します。

Protégé DesktopにOracleのプラグインを組み込むには、以下のソフトウェアが必要です。
  • Oracle JDK 17以降
  • Protégé Desktopのプラットフォーム非依存版
  • Protégé DesktopのOracleプラグイン
それぞれのアーカイブをダウンロードして、Oracleプラグインを組み込んだ状態でProtégé Desktopを起動するまでの作業を実施します。

作業はmacOSで実施します。Protégé Desktopのプラットフォーム非依存版を使用するため、LinuxやWindowsでも、概ね似たような手順でセットアップができるのではと思います。


Oracle JDK 17のダウンロード



OracleのJava Downloadsのページにアクセスします。


本記事はmacOSで作業しているため、macOSのARM64 DMG Installerをダウンロードしてインストールします。


それぞれの環境に合わせたJDKをダウンロードし、インストールします。


Protégé Desktopのプラットフォーム非依存版のダウンロード



GitHub上のProtégéのReleasesのページを開きます。


最新リリースのAssetsに含まれる、-platform-independent.zipが付いたアーカイブをダウンロードします。2025年10月17日現在では、Protege-5.6.8-platform-independent.zip がそのファイルになります。



Oracleプラグインのダウンロード



Protégé DesktopのOracleプラグインを含むアーカイブは、Oracle Software Delivery Cloudからダウンロードします。


サインインにはOracleプロファイルが必要です。

Oracle Graph - Support Adaptors and Pluginsで検索します。

いくつかのパッケージが見つかります。その中の以下をダウンロードします。

Oracle Graph - Support Adaptors and Plugins 19c and 23a


リンクをクリックしてダウンロードするアイテムとして追加します。

View Itemsをクリックすると、ダウンロード対象のアイテムを確認できます。

Continueをクリックします。


Oracle Graph - Support Adaptors and Plugins 19c and 23a をチェックし、Continueをクリックします。


ライセンス確認の画面が表示されます。同意するとダウンロードのページが開きます。

V1051657-01(V1051657-01.zip)のリンクをクリックします。V1051657-01.zipが手元にダウンロードされます。


以上でProtégé Desktopのプラグインを含んだアーカイブがダウンロードできました。


Protégé Desktopの実行



Oracle JDK 17はインストール済みとします。作業ディレクトリを作成し、ダウンロードした2つのアーカイブ、Protege-5.6.8-platform-independent.zipV1051657-01.zipを配置します。

Protege % ls

Protege-5.6.8-platform-independent.zip V1051657-01.zip

Protege % 


ファイルV1051657-01.zipに含まれるprotege_pluginを解凍します。

unzip V1051657-01.zip "protege_plugin/*"

Protege % unzip V1051657-01.zip "protege_plugin/*"

Archive:  V1051657-01.zip

   creating: protege_plugin

  inflating: protege_plugin/OraclePlugin_Protege550-3.12.0.jar  

   creating: protege_plugin/doc

  inflating: protege_plugin/doc/Protege5_5_Guide.pdf  

  inflating: protege_plugin/OWLUpdater.jar  

Protege % 


Protégé Desktopを解凍します。

unzip Protege-5.6.8-platform-independent.zip

ディレクトリProtege-5.6.8が作成され、その下にファイルが作成されます。
 

Protege % unzip Protege-5.6.8-platform-independent.zip 

Archive:  Protege-5.6.8-platform-independent.zip

   creating: Protege-5.6.8

   creating: Protege-5.6.8/app

   creating: Protege-5.6.8/bundles

   creating: Protege-5.6.8/conf

   creating: Protege-5.6.8/conf/deprecation

   creating: Protege-5.6.8/plugins

  inflating: Protege-5.6.8/app/Protege.icns  

  inflating: Protege-5.6.8/app/Protege.ico  

  inflating: Protege-5.6.8/run.bat   

  inflating: Protege-5.6.8/bundles/guava.jar  

  inflating: Protege-5.6.8/bundles/protege-launcher.jar  

  inflating: Protege-5.6.8/bundles/pfl-dynamic.jar  

  inflating: Protege-5.6.8/bundles/org.eclipse.equinox.registry.jar  

  inflating: Protege-5.6.8/bundles/gmbal.jar  

  inflating: Protege-5.6.8/bundles/jul-to-slf4j.jar  

  inflating: Protege-5.6.8/bundles/owlapi-osgidistribution.jar  

  inflating: Protege-5.6.8/bundles/asm-util.jar  

  inflating: Protege-5.6.8/bundles/management-api.jar  

  inflating: Protege-5.6.8/bundles/jaxb-api.jar  

  inflating: Protege-5.6.8/bundles/protege-common.jar  

  inflating: Protege-5.6.8/bundles/protege-editor-owl.jar  

  inflating: Protege-5.6.8/bundles/org.eclipse.jgit.jar  

  inflating: Protege-5.6.8/bundles/glassfish-corba-orb.jar  

  inflating: Protege-5.6.8/bundles/maven-artifact.jar  

  inflating: Protege-5.6.8/bundles/logback-classic.jar  

  inflating: Protege-5.6.8/bundles/slf4j-api.jar  

  inflating: Protege-5.6.8/bundles/logback-core.jar  

  inflating: Protege-5.6.8/bundles/asm-analysis.jar  

  inflating: Protege-5.6.8/bundles/org.eclipse.equinox.supplement.jar  

  inflating: Protege-5.6.8/bundles/asm.jar  

  inflating: Protege-5.6.8/bundles/jsr305.jar  

  inflating: Protege-5.6.8/bundles/javax.activation.jar  

  inflating: Protege-5.6.8/bundles/org.apache.servicemix.bundles.javax-inject.jar  

  inflating: Protege-5.6.8/bundles/glassfish-corba-omgapi.jar  

  inflating: Protege-5.6.8/bundles/pfl-basic.jar  

  inflating: Protege-5.6.8/bundles/JavaEWAH.jar  

  inflating: Protege-5.6.8/bundles/org.eclipse.equinox.common.jar  

  inflating: Protege-5.6.8/bundles/asm-tree.jar  

  inflating: Protege-5.6.8/bundles/commons-io.jar  

  inflating: Protege-5.6.8/bundles/protege-editor-core.jar  

  inflating: Protege-5.6.8/bundles/jaxb-core.jar  

  inflating: Protege-5.6.8/bundles/log4j-over-slf4j.jar  

  inflating: Protege-5.6.8/bundles/glassfish-corba-internal-api.jar  

  inflating: Protege-5.6.8/bundles/pfl-tf.jar  

  inflating: Protege-5.6.8/bundles/jaxb-impl.jar  

  inflating: Protege-5.6.8/bundles/org.apache.felix.main.jar  

  inflating: Protege-5.6.8/conf/deprecation/obi.yaml  

  inflating: Protege-5.6.8/conf/deprecation/basic.yaml  

  inflating: Protege-5.6.8/conf/deprecation/go.yaml  

  inflating: Protege-5.6.8/conf/logback.xml  

  inflating: Protege-5.6.8/conf/logback-win.xml  

  inflating: Protege-5.6.8/conf/config.xml  

  inflating: Protege-5.6.8/conf/jvm.conf  

  inflating: Protege-5.6.8/run.sh    

  inflating: Protege-5.6.8/plugins/explanation-workbench-3.0.1.jar  

  inflating: Protege-5.6.8/plugins/sparql-query-plugin-3.0.0.jar  

  inflating: Protege-5.6.8/plugins/code-generation-2.0.0.jar  

  inflating: Protege-5.6.8/plugins/owldoc-3.0.3.jar  

  inflating: Protege-5.6.8/plugins/existentialquery-2.0.0.jar  

  inflating: Protege-5.6.8/plugins/rdf-library-3.0.0.jar  

  inflating: Protege-5.6.8/plugins/ontograf-2.0.3.jar  

  inflating: Protege-5.6.8/plugins/elk-protege-0.6.0.jar  

  inflating: Protege-5.6.8/plugins/cellfie-2.1.0.jar  

  inflating: Protege-5.6.8/plugins/owlviz-5.0.3.jar  

  inflating: Protege-5.6.8/plugins/org.coode.dlquery-4.0.1.jar  

  inflating: Protege-5.6.8/plugins/swrltab-plugin-2.0.10.jar  

  inflating: Protege-5.6.8/plugins/org.semanticweb.hermit-1.4.3.456.jar  

  inflating: Protege-5.6.8/run.command  

Protege % 


ホーム・ディレクトリ直下に、プラグインを配置するディレクトリ~/.Protege/pluginsを作成します。

mkdir -p ~/.Protege/plugins

Protege % mkdir -p ~/.Protege/plugins

Protege % 


ディレクトリprotege_pluginの下にあるOraclePlugin_Protege550-3.12.0.jar ~/.Protege/pluginsの下にコピーします。この作業により、Protégé Desktopの起動時にOracleプラグインが組み込まれます。

cp protege_plugin/OraclePlugin_Protege550-3.12.0.jar ~/.Protege/plugins

Protege % cp protege_plugin/OraclePlugin_Protege550-3.12.0.jar ~/.Protege/plugins 

Protege % 


Protégé Desktopを起動します。ディレクトリProtege-5.8.6に移動します。

cd Protege-5.8.6

Protege % cd Protege-5.6.8

Protege-5.6.8 % 


デフォルトで選択されるjavaのバージョンが、Oracle JDK 17であることを確認します。

Protege-5.6.8 % java -version

java version "17.0.16" 2025-07-15 LTS

Java(TM) SE Runtime Environment (build 17.0.16+12-LTS-247)

Java HotSpot(TM) 64-Bit Server VM (build 17.0.16+12-LTS-247, mixed mode, sharing)

Protege-5.6.8 % 


Protégé Desktopの起動スクリプトrun.sh(Windowsではrun.bat)を実行します。

./run.sh

Protege-5.6.8 % ./run.sh

CompileCommand: exclude javax/swing/text/GlyphView.getBreakSpot bool exclude = true

******************************************************************************** 

**                                  Protege                                   ** 

******************************************************************************** 

 

----------------- Initialising and Starting the OSGi Framework ----------------- 

FrameworkFactory Class: org.apache.felix.framework.FrameworkFactory 

 

The OSGi framework has been initialised 

------------------------------- Starting Bundles ------------------------------- 

Starting bundle org.protege.common 

Starting bundle org.eclipse.equinox.common 

Starting bundle org.eclipse.equinox.supplement 

Starting bundle org.protege.editor.core.application 

Starting bundle org.eclipse.equinox.registry 

Starting bundle org.glassfish.pfl.pfl-dynamic 

Starting bundle log4j.over.slf4j 



[以下省略]


Protégé Desktopが起動します。メニューにOracleが含まれています。


PreferencesのPluginsを開くと、Oracle Plugin 3.12.0が組み込まれていることが確認できます。


今回の作業は以上になります。