【问题标题】:How can I implement openllet reasoner to my stain/jena-fuseki Docker image如何对我的污点/jena-fuseki Docker 映像实施 openllet 推理器
【发布时间】:2021-11-02 10:57:46
【问题描述】:

我在实现内置 jena-fuseki 推理器时遇到了一些问题,我可以让它工作,但它不会阻止我添加不正确的三元组。所以我想将 Openllet 推理器添加到我的 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 看起来像这样,我正在做的是将我的配置/本体文件复制到我的图像以及我的 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]

我的配置文件调用灵感来自this,没有 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" ; ]
  .  

我正在使用家族本体进行测试,

你还尝试了什么?

我一直在尝试下面链接中描述的事情,其中​​大部分已经解决,并导致我不得不考虑其他问题:

我也经常遇到这个问题

初始化时出现错误异常:无法加载对象 34064d96e625bd1f4718dc614ac47d38 [ja:reasoner of file:///fuseki/configuration/db_tdb.ttl#modelInf] 所需的类 'openllet.jena.PelletReasonerFactory'

人们通常将 Openllet 用于 maven 或与 Java 项目结合使用,但我只使用配置文件和后端 API 进行调用,一切都按照我向您展示的内容进行配置。
由于我还是 docker 和 jena-fuseki 的新手,这可能是我正在尝试做的一个概念问题,所以如果您知道我应该在哪里寻找更多信息,我将非常感激。

【问题讨论】:

  • 如果您使用 CMD 的 JSON 数组形式,则每个单词都需要用双引号括起来。由于您拥有的不是有效的 JSON 数组,因此 Docker 回退到使用 shell 处理它,从而导致 [java 错误。双引号 CMD 中的 jar 文件名可以解决您的问题吗?
  • @DavidMaze 它解决了我的一个问题,但后来我得到了no main manifest attribute 我发现openllet-distribution-2.6.5-sources 有一个空的清单文件但没有original-openllet-distribution-2.6.5.jar 并且仍然运行同样的问题,因为它是另一个话题,我可能会尝试自己解决这个问题,然后再回来。感谢您的解释,它帮助我了解了 CMD 的工作原理 =)

标签: docker docker-compose jena inference fuseki


【解决方案1】:

我在谷歌上找不到任何东西,但我在 github 上找到了这个:The answer

我按照他的步骤将 jar 下载到我的服务器/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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    相关资源
    最近更新 更多