如何对我的 stain/jena-fuseki Docker 图像实施 openllet reasoner
How can I implement openllet reasoner to my stain/jena-fuseki Docker image
我在实现内置 jena-fuseki 推理器时遇到了一些问题,我可以让它工作,但它不会阻止我添加不正确的三元组。所以我想将 Openllet reasoner 添加到我的 jena-fuseki 服务器。
但我不知道如何将 openllet jar 添加到我的 Docker 图像并使其工作,我 运行 遇到许多 java 依赖问题。
要添加上下文,我的 docker-compose 看起来像这样:
jena-fuseki-server:
hostname: jena-fuseki
build:
context: .
dockerfile: server.Dockerfile
restart: always
ports:
- 3030:3030
environment:
- ADMIN_PASSWORD=admin
- FUSEKI_DATASET_1=ds
我的 server.Dockerfile 看起来像那样,我正在做的是将我的 config/ontologies 文件复制到我的图像以及我的 openllet jar,我'我然后尝试执行它会产生此问题:
jena-fuseki-server_1 | /bin/sh: 1: [java,: not found
FROM stain/jena-fuseki:4.0.0
#This is made to stop Issue with JVM locks
RUN apt-get update; \
apt-get install -y --no-install-recommends procps
RUN mkdir -p /fuseki/ontologies/
RUN mkdir -p /fuseki/configuration/
RUN mkdir -p /fuseki/inference/
RUN mkdir -p /fuseki
WORKDIR /fuseki
COPY server/openllet inference
COPY server/configuration configuration
COPY server/test ontologies
CMD ["java", "-jar", inference/openllet-distribution-2.6.5-sources.jar]
我的 配置文件 调用的灵感来自 没有 tdb 因为我现在只是测试,她看起来像这样并为 OWLMini + Generic
@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .
<#service1> rdf:type fuseki:Service ;
fuseki:name "ds" ; # http://host:port/ds
fuseki:serviceQuery "sparql" ; # SPARQL query service
fuseki:serviceQuery "query" ; # SPARQL query service (alt name)
fuseki:serviceUpdate "update" ; # SPARQL update service
fuseki:serviceUpload "upload" ; # Non-SPARQL upload service
fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph store protocol (read and write)
# A separate read-only graph store endpoint:
fuseki:serviceReadGraphStore "get" ; # SPARQL Graph store protocol (read only)
fuseki:dataset <#dataset> ;
.
<#dataset> rdf:type ja:RDFDataset ;
ja:defaultGraph <#modelInf> ;
.
<#modelInf> rdf:type ja:InfModel ;
ja:content [ja:externalContent <file:/fuseki/ontologies/server_famille.ttl> ; ] ;
ja:reasoner [
ja:reasonerClass "openllet.jena.PelletReasonerFactory" ; ]
.
我正在使用家庭 ontology 进行测试,
What else have you tried ?
我一直在尝试下面链接中描述的事情,其中大部分已经解决并导致我遇到其他问题,这让我不得不另想办法:
- fuseki-how-to-add-pellet-reasoner
- 在 docker permissions-jena
中将 jar 添加到 jena home (/jena-fuseki)
- 试图在 docker 中安装 open jdk 但无法 运行 apt-get jdk 8
我也运行很关注这个问题
ERROR Exception in initialization: the class 'openllet.jena.PelletReasonerFactory' required by the object 34064d96e625bd1f4718dc614ac47d38 [ja:reasoner of file:///fuseki/configuration/db_tdb.ttl#modelInf] could not be loaded
人们通常将 Openllet 用于 Maven 或与 Java 项目结合使用,但我只使用配置文件和后端 API 进行调用,一切都按照我所展示的进行配置你.
由于我对 docker 和 jena-fuseki 还是个新手,这可能是我正在尝试做的事情的概念问题,所以如果您知道我应该在哪里寻求更多信息,我将非常感激.
我在 google 中找不到任何内容,但我在 github 上找到了这个:The answer
我按照他的步骤将 jar 下载到我的 server/openllet 中并提取了文件,这样我就可以将它们与所有依赖项一起复制到新的额外文件夹中
这是我的 Dockerfile :
FROM stain/jena-fuseki:4.0.0
#This is made to stop Issue with JVM locks
RUN apt-get update; \
apt-get install -y --no-install-recommends procps
RUN mkdir -p /fuseki/ontologies/
RUN mkdir -p /fuseki/configuration/
RUN mkdir -p /fuseki/extra/
RUN mkdir -p /fuseki
WORKDIR /fuseki
COPY server/openllet/jar_files extra
COPY server/configuration configuration
COPY server/test ontologies
我仍然可以验证 SWRL 推理。无需使用内置的 GenericRuleReasoner + OWLMiniReasoner
我在实现内置 jena-fuseki 推理器时遇到了一些问题,我可以让它工作,但它不会阻止我添加不正确的三元组。所以我想将 Openllet reasoner 添加到我的 jena-fuseki 服务器。
但我不知道如何将 openllet jar 添加到我的 Docker 图像并使其工作,我 运行 遇到许多 java 依赖问题。 要添加上下文,我的 docker-compose 看起来像这样:
jena-fuseki-server:
hostname: jena-fuseki
build:
context: .
dockerfile: server.Dockerfile
restart: always
ports:
- 3030:3030
environment:
- ADMIN_PASSWORD=admin
- FUSEKI_DATASET_1=ds
我的 server.Dockerfile 看起来像那样,我正在做的是将我的 config/ontologies 文件复制到我的图像以及我的 openllet jar,我'我然后尝试执行它会产生此问题:
jena-fuseki-server_1 | /bin/sh: 1: [java,: not found
FROM stain/jena-fuseki:4.0.0
#This is made to stop Issue with JVM locks
RUN apt-get update; \
apt-get install -y --no-install-recommends procps
RUN mkdir -p /fuseki/ontologies/
RUN mkdir -p /fuseki/configuration/
RUN mkdir -p /fuseki/inference/
RUN mkdir -p /fuseki
WORKDIR /fuseki
COPY server/openllet inference
COPY server/configuration configuration
COPY server/test ontologies
CMD ["java", "-jar", inference/openllet-distribution-2.6.5-sources.jar]
我的 配置文件 调用的灵感来自
@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .
<#service1> rdf:type fuseki:Service ;
fuseki:name "ds" ; # http://host:port/ds
fuseki:serviceQuery "sparql" ; # SPARQL query service
fuseki:serviceQuery "query" ; # SPARQL query service (alt name)
fuseki:serviceUpdate "update" ; # SPARQL update service
fuseki:serviceUpload "upload" ; # Non-SPARQL upload service
fuseki:serviceReadWriteGraphStore "data" ; # SPARQL Graph store protocol (read and write)
# A separate read-only graph store endpoint:
fuseki:serviceReadGraphStore "get" ; # SPARQL Graph store protocol (read only)
fuseki:dataset <#dataset> ;
.
<#dataset> rdf:type ja:RDFDataset ;
ja:defaultGraph <#modelInf> ;
.
<#modelInf> rdf:type ja:InfModel ;
ja:content [ja:externalContent <file:/fuseki/ontologies/server_famille.ttl> ; ] ;
ja:reasoner [
ja:reasonerClass "openllet.jena.PelletReasonerFactory" ; ]
.
我正在使用家庭 ontology 进行测试,
What else have you tried ?
我一直在尝试下面链接中描述的事情,其中大部分已经解决并导致我遇到其他问题,这让我不得不另想办法:
- fuseki-how-to-add-pellet-reasoner
- 在 docker permissions-jena 中将 jar 添加到 jena home (/jena-fuseki)
- 试图在 docker 中安装 open jdk 但无法 运行 apt-get jdk 8
我也运行很关注这个问题
ERROR Exception in initialization: the class 'openllet.jena.PelletReasonerFactory' required by the object 34064d96e625bd1f4718dc614ac47d38 [ja:reasoner of file:///fuseki/configuration/db_tdb.ttl#modelInf] could not be loaded
人们通常将 Openllet 用于 Maven 或与 Java 项目结合使用,但我只使用配置文件和后端 API 进行调用,一切都按照我所展示的进行配置你.
由于我对 docker 和 jena-fuseki 还是个新手,这可能是我正在尝试做的事情的概念问题,所以如果您知道我应该在哪里寻求更多信息,我将非常感激.
我在 google 中找不到任何内容,但我在 github 上找到了这个:The answer
我按照他的步骤将 jar 下载到我的 server/openllet 中并提取了文件,这样我就可以将它们与所有依赖项一起复制到新的额外文件夹中
这是我的 Dockerfile :
FROM stain/jena-fuseki:4.0.0
#This is made to stop Issue with JVM locks
RUN apt-get update; \
apt-get install -y --no-install-recommends procps
RUN mkdir -p /fuseki/ontologies/
RUN mkdir -p /fuseki/configuration/
RUN mkdir -p /fuseki/extra/
RUN mkdir -p /fuseki
WORKDIR /fuseki
COPY server/openllet/jar_files extra
COPY server/configuration configuration
COPY server/test ontologies
我仍然可以验证 SWRL 推理。无需使用内置的 GenericRuleReasoner + OWLMiniReasoner