2025年11月12日時点では、V1048830-01.zipに最新のOracle Adapter for Eclipse RDf4Jが含まれています。このバージョン22.4.1では、Oracle RDF Graphのスキーマ・プライベート・ネットワークを扱えます。
I reviewed and accept the Oracle License Agreement.にチェックを入れ、V1048830-01.zipをダウンロードします。
8 RDF Graph Support for Eclipse RDF4J
RDF4J % ls
apache-tomcat-9.0.112.zip ons.jar
bin oraclepki.jar
Dockerfile orai18n.jar
eclipse-rdf4j-4.3.16 Readme.txt
eclipse-rdf4j-4.3.16-sdk.zip rsi.jar
jar simplefan.jar
javadoc ucp.jar
Javadoc-Readmes V1048830-01.zip
jdk-11.0.29_linux-aarch64_bin.tar.gz xdb.jar
LICENSE.txt xmlparserv2_sans_jaxp_services.jar
ojdbc8-full.tar.gz xmlparserv2.jar
ojdbc8.jar
RDF4J %
podman build -t eclipse-rdf4j .
RDF4J % podman build -t eclipse-rdf4j .
[1/2] STEP 1/8: FROM oraclelinux:8 AS builder
[1/2] STEP 2/8: LABEL maintainer="Aurelio Garcia-Ribeyro <aurelio.garciaribeyro@oracle.com>"
--> Using cache 20c1fd73b1c521e8fc84d6b19eaf6a74d88aad280d31128586d033615103a2e9
--> 20c1fd73b1c5
[1/2] STEP 3/8: RUN dnf install -y tar
--> Using cache 591cf245249392e4abee5afe40f9cc94cfb49fc300e7b95575f34ee8e44fd859
--> 591cf2452493
[1/2] STEP 4/8: ENV LANG en_US.UTF-8
--> Using cache 4b987187b0aa50d678fee49bc6427f31493f88a3653a2cb73894c02bb6fb8002
--> 4b987187b0aa
[1/2] STEP 5/8: ENV JAVA_HOME=/usr/java/jdk-11
--> Using cache 7c106ce1b78d37eacc96dbaccef2a1852ab9a417e49b33112599427477faf491
--> 7c106ce1b78d
[1/2] STEP 6/8: COPY *.tar.gz /tmp/
--> Using cache ecf0d77276bb428cff63e9a9483888a01bf0b5b6f515336a9bdacf0d9b530fc1
--> ecf0d77276bb
[1/2] STEP 7/8: SHELL ["/bin/bash", "-o", "pipefail", "-c"]
--> Using cache c139524f091c84958fe357697ac8147af08486413d0e272a7a414d2678b7661b
--> c139524f091c
[1/2] STEP 8/8: RUN set -eux; ARCH="$(uname -m)" && if [ "$ARCH" = "x86_64" ]; then mv "$(ls /tmp/jdk-11*_linux-x64_bin.tar.gz)" /tmp/jdk.tar.gz ; else mv "$(ls /tmp/jdk-11*_linux-aarch64_bin.tar.gz)" /tmp/jdk.tar.gz ; fi && mkdir -p "$JAVA_HOME"; tar --extract --file /tmp/jdk.tar.gz --directory "$JAVA_HOME" --strip-components 1
--> Using cache 705129c2b392aaab8890e6b7b64307985824227f44ff0618815a8b3c7c5be171
--> 705129c2b392
[2/2] STEP 1/7: FROM oraclelinux:8
[2/2] STEP 2/7: ENV LANG en_US.UTF-8
--> Using cache 3c9aed82232a0d4fea8b8643a42bf61575a15f8eb9dab83a53a3558801de4e32
--> 3c9aed82232a
[2/2] STEP 3/7: ENV JAVA_HOME=/usr/java/jdk-11
--> Using cache 8bcf0430ed2ca6f4506b22e3798a0e2b9049910e935c8bc2651c2eda9ace98c7
--> 8bcf0430ed2c
[2/2] STEP 4/7: ENV PATH $JAVA_HOME/bin:$PATH
--> Using cache 4d4e7817dda41cbc783074f4a683f149df0115367671eba491d63e9db23cdac5
--> 4d4e7817dda4
[2/2] STEP 5/7: COPY --from=builder $JAVA_HOME $JAVA_HOME
--> Using cache 9e980fb35565702fa1a5cca1a37b1bc918d1d399a1ba4e8d22ac860791af52b4
--> 9e980fb35565
[2/2] STEP 6/7: RUN set -eux; dnf -y update; dnf install -y freetype fontconfig unzip ; rm -rf /var/cache/dnf; ln -sfT "$JAVA_HOME" /usr/java/default; ln -sfT "$JAVA_HOME" /usr/java/latest; for bin in "$JAVA_HOME/bin/"*; do base="$(basename "$bin")"; [ ! -e "/usr/bin/$base" ]; alternatives --install "/usr/bin/$base" "$base" "$bin" 20000; done; java -Xshare:dump;
--> Using cache 58984da55c332b36b6aedc13cd2f18e7811a7f52767b2f2282e48f71fcbd7c49
--> 58984da55c33
[2/2] STEP 7/7: CMD ["sh"]
--> Using cache f7c8eae69b9403b94a470a5a7e2d38642699a18415486b5cc17c25838a7777be
[2/2] COMMIT eclipse-rdf4j
--> f7c8eae69b94
Successfully tagged localhost/eclipse-rdf4j:latest
Successfully tagged localhost/oracle-jena:latest
f7c8eae69b9403b94a470a5a7e2d38642699a18415486b5cc17c25838a7777be
RDF4J %
echo "exit" | podman run --name oracle-rdf4j -i -p 8080:8080 -v `pwd`:/opt/oracle eclipse-rdf4j
podman start oracle-rdf4j
RDF4J % echo "exit" | podman run --name oracle-rdf4j -i -p 8080:8080 -v `pwd`:/opt/oracle eclipse-rdf4j
RDF4J % podman start oracle-rdf4j
oracle-rdf4j
RDF4J %
podman exec -it oracle-rdf4j bash
% podman exec -it oracle-rdf4j bash
[root@7b1616c7fb95 /]#
unzip -d /opt /opt/oracle/apache-tomcat-9.0.112.zip
ln -s /opt/apache-tomcat-9.0.112 /opt/tomcat
[root@8664e23f7c9a /]# unzip -d /opt /opt/oracle/apache-tomcat-9.0.112.zip
Archive: /opt/oracle/apache-tomcat-9.0.112.zip
creating: /opt/apache-tomcat-9.0.112/
creating: /opt/apache-tomcat-9.0.112/bin/
creating: /opt/apache-tomcat-9.0.112/conf/
creating: /opt/apache-tomcat-9.0.112/lib/
creating: /opt/apache-tomcat-9.0.112/logs/
creating: /opt/apache-tomcat-9.0.112/temp/
creating: /opt/apache-tomcat-9.0.112/webapps/
creating: /opt/apache-tomcat-9.0.112/webapps/ROOT/
creating: /opt/apache-tomcat-9.0.112/webapps/ROOT/WEB-INF/
creating: /opt/apache-tomcat-9.0.112/webapps/docs/
creating: /opt/apache-tomcat-9.0.112/webapps/docs/META-INF/
creating: /opt/apache-tomcat-9.0.112/webapps/docs/WEB-INF/
[中略]
inflating: /opt/apache-tomcat-9.0.112/webapps/manager/WEB-INF/web.xml
inflating: /opt/apache-tomcat-9.0.112/webapps/manager/css/manager.css
inflating: /opt/apache-tomcat-9.0.112/webapps/manager/images/asf-logo.svg
inflating: /opt/apache-tomcat-9.0.112/webapps/manager/images/favicon.ico
inflating: /opt/apache-tomcat-9.0.112/webapps/manager/images/tomcat.svg
inflating: /opt/apache-tomcat-9.0.112/webapps/manager/index.jsp
inflating: /opt/apache-tomcat-9.0.112/webapps/manager/status.xsd
inflating: /opt/apache-tomcat-9.0.112/webapps/manager/xform.xsl
[root@8664e23f7c9a /]# ln -s /opt/apache-tomcat-9.0.112 /opt/tomcat
[root@8664e23f7c9a /]#
[root@7b1616c7fb95 tomcat]# cd /opt/tomcat
[root@7b1616c7fb95 tomcat]# chmod a+x bin/catalina.sh
[root@7b1616c7fb95 tomcat]#
マネージャ・アプリケーションにアクセスするユーザーadminを有効にします。conf/tomcat-users.xmlを修正します。
<!--
<user username="admin" password="<must-be-changed>" roles="manager-gui"/>
<user username="robot" password="<must-be-changed>" roles="manager-script"/>
-->
以下のようにコメントアウトを解除し、<must-be-changed>の部分にパスワードを記載します。
<user username="admin" password="********" roles="manager-gui"/>
<user username="robot" password="********" roles="manager-script"/>
webapps以下にマネージャ・アプリケーションなどが含まれています。デフォルトでは同じホストからのアクセスに制限されています。Tomcatはコンテナで実行され、ホストマシンで実行されたブラウザは、同じマシンとは認識されません。そのため、アクセス制限を解除します。
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
修正後は以下のようになります。
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
その他のアプリケーション、docs、examples、host-managerからも、同様にcontext.xmlよりアクセス制限の部分を削除します。
以下の記述を変更します。
<multipart-config>
<!-- 50 MiB max -->
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
<multipart-config>
<!-- 100 MiB max -->
<max-file-size>104857600</max-file-size>
<max-request-size>104857600</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
[root@7b1616c7fb95 tomcat]# sh bin/startup.sh
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr/java/jdk-11
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@7b1616c7fb95 tomcat]#
<Context>
<!-- Default set of monitored resources. If one of these changes, the -->
<!-- web application will be reloaded. -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<Resource name="jdbc/OracleSemDS" auth="Container"
driverClassName="oracle.jdbc.OracleDriver"
factory="oracle.jdbc.pool.OracleDataSourceFactory"
scope="Shareable"
type="oracle.jdbc.pool.OracleDataSource"
user="wksp_apexdev"
password="*******"
url="jdbc:oracle:thin:@host.containers.internal:1521/freepdb1"
maxActive="100"
minIdle="15"
maxIdel="15"
initialSize="15"
removeAbandonedTimeout="30"
validationQuery="select 1 from dual"
/>
</Context>
cp /opt/oracle/ojdbc8.jar /opt/tomcat/lib/
cp /opt/oracle/ucp.jar /opt/tomcat/lib/
[root@9f6375d64858 tomcat]# cp /opt/oracle/ojdbc8.jar /opt/tomcat/lib/
[root@9f6375d64858 tomcat]# cp /opt/oracle/ucp.jar /opt/tomcat/lib/
[root@9f6375d64858 tomcat]#
ドキュメントの8.3.1 Setting up Oracle RDF Graph Adapter for Eclipse RDF4J for Use with Javaのステップ6では、JSON-LDを使用する場合はhttpclient-4.5.14.jarなどのライブラリの追加が必要と記載されています。これらのライブラリは/opt/oracle/eclipse-rdf4j-4.3.16/lib/に含まれていますが、今回はこの手順はスキップします。JSON-LDを使用する場合は、ライブラリの追加が必要と思われます。また、ステップ5ではlog4jなどのライブラリが必要と記載されていますが、IDEでの利用に限定されているようなので、ステップ5についてもスキップします。
cp /opt/oracle/jar/* /opt/tomcat/webapps/rdf4j-workbench/WEB-INF/lib/
[root@8664e23f7c9a jar]# cp /opt/oracle/jar/* /opt/tomcat/webapps/rdf4j-server/WEB-INF/lib/
[root@8664e23f7c9a jar]# cp /opt/oracle/jar/* /opt/tomcat/webapps/rdf4j-workbench/WEB-INF/lib/
[root@8664e23f7c9a jar]#
[root@9f6375d64858 tomcat]# sh bin/shutdown.sh
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr/java/jdk-11
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
[root@9f6375d64858 tomcat]# sh bin/startup.sh
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr/java/jdk-11
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@9f6375d64858 tomcat]#
begin
sem_apis.create_rdf_network(
tablespace_name => 'USERS'
,network_owner => 'WKSP_APEXDEV'
,network_name => 'LOCALNET'
);
end;
/
SQL> begin
2 sem_apis.create_rdf_network(
3 tablespace_name => 'USERS'
4 ,network_owner => 'WKSP_APEXDEV'
5 ,network_name => 'LOCALNET'
6 );
7 end;
8* /
PL/SQLプロシージャが正常に完了しました。
SQL>
PREFIX : <https://example.org/kachikachi#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?avenger ?label_ja ?label_en
WHERE {
# 「仇」= 老婆の仇討ちをし、かつ狸に報復を与えた主体
?avenger :avenges :OldWoman .
?avenger (:burns|:drowns|:tricks) :Tanuki .
OPTIONAL { ?avenger rdfs:label ?label_ja FILTER (lang(?label_ja) = "ja") }
OPTIONAL { ?avenger rdfs:label ?label_en FILTER (lang(?label_en) = "en") }
}

















