当前位置: 首页 > 知识库问答 >
问题:

如何在GraphDB远程存储库上堆叠SpinSail

傅越
2023-03-14

我使用GraphDB来存储我的三元组,需要将SpinSail组件堆叠在GraphDB上,以支持自旋规则以及GraphDB默认支持的所有其他功能。

到目前为止,我已经成功地在远程服务器上创建了一个支持Spin规则的存储库(详细信息如下),但它似乎只支持Spin,而不支持GraphDB支持的其他功能(例如查看图表、通过文件添加三元组、搜索等)

创建存储库后,配置文件如下所示:

@prefix ms: <http://www.openrdf.org/config/sail/memory#> .
@prefix rep: <http://www.openrdf.org/config/repository#> .
@prefix sail: <http://www.openrdf.org/config/sail#> .
@prefix sr: <http://www.openrdf.org/config/repository/sail#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<#Test1> a rep:Repository;
  rep:repositoryID "Test1";
  rep:repositoryImpl [
      rep:repositoryType "openrdf:SailRepository";
      sr:sailImpl [
          sail:delegate [
              sail:sailType "openrdf:MemoryStore";
              ms:persist true
            ];
          sail:sailType "openrdf:SpinSail"
        ]
    ] .

虽然一个普通的配置文件(例如,如果有人通过工作台创建一个存储库)看起来如下所示:

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rep: <http://www.openrdf.org/config/repository#> .
@prefix sail: <http://www.openrdf.org/config/sail#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<#Test> a rep:Repository;
  rep:repositoryID "Test";
  rep:repositoryImpl [
      rep:repositoryType "graphdb:FreeSailRepository";
      <http://www.openrdf.org/config/repository/sail#sailImpl> [
          <http://www.ontotext.com/trree/owlim#base-URL> "http://example.org/owlim#";
          <http://www.ontotext.com/trree/owlim#check-for-inconsistencies> "false";
          <http://www.ontotext.com/trree/owlim#defaultNS> "";
          <http://www.ontotext.com/trree/owlim#disable-sameAs> "false";
          <http://www.ontotext.com/trree/owlim#enable-context-index> "false";
          <http://www.ontotext.com/trree/owlim#enable-literal-index> "true";
          <http://www.ontotext.com/trree/owlim#enablePredicateList> "true";
          <http://www.ontotext.com/trree/owlim#entity-id-size> "32";
          <http://www.ontotext.com/trree/owlim#entity-index-size> "10000000";
          <http://www.ontotext.com/trree/owlim#imports> "";
          <http://www.ontotext.com/trree/owlim#in-memory-literal-properties> "true";
          <http://www.ontotext.com/trree/owlim#query-limit-results> "0";
          <http://www.ontotext.com/trree/owlim#query-timeout> "0";
          <http://www.ontotext.com/trree/owlim#read-only> "false";
          <http://www.ontotext.com/trree/owlim#repository-type> "file-repository";
          <http://www.ontotext.com/trree/owlim#ruleset> "owl2-rl-optimized";
          <http://www.ontotext.com/trree/owlim#storage-folder> "storage";
          <http://www.ontotext.com/trree/owlim#throw-QueryEvaluationException-on-timeout> "false";
          sail:sailType "graphdb:FreeSail"
        ]
    ];
  rdfs:label "Test" .

以下代码用于创建存储库。

RemoteRepositoryManager manager = new RemoteRepositoryManager("http://localhost:7200");
        manager.init();

        String repositoryId = "Test1";

        // create a configuration for the SAIL stack
        boolean persist = true;

        // create a configuration for the SAIL stack
        SailImplConfig spinSailConfig = new MemoryStoreConfig(persist);

        spinSailConfig = new SpinSailConfig(spinSailConfig);

        RepositoryImplConfig repositoryTypeSpec = new SailRepositoryConfig(spinSailConfig);

        // create a configuration for the repository implementation
        // RepositoryImplConfig repositoryTypeSpec = new SailRepositoryConfig(backendConfig);

        RepositoryConfig repConfig = new RepositoryConfig(repositoryId, repositoryTypeSpec);
        manager.addRepositoryConfig(repConfig);

创建此存储库后,我可以通过SPARQL部分(通过使用insert DATA)将以下规则插入其中:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sp: <http://spinrdf.org/sp#>
PREFIX spin: <http://spinrdf.org/spin#>
PREFIX ex: <http://example.org/>

INSERT DATA {
ex:Person a rdfs:Class ;
    spin:rule [
        a sp:Construct ;
    sp:text """PREFIX ex: <http://example.org/>
               CONSTRUCT { ?this ex:childOf ?parent . }
               WHERE { ?parent ex:parentOf ?this . }"""
] . }

然后类似地添加以下语句:

PREFIX ex: <http://example.org/>

INSERT DATA {
ex:John a ex:Father ;
        ex:parentOf ex:Lucy .
ex:Lucy a ex:Person .
}

然后运行以下查询:

PREFIX ex: <http://example.org/>

SELECT ?child WHERE { ?child ex:childOf ?parent }

我能够确认旋转规则已成功执行。

所以我的问题是:

有没有办法创建一个支持GraphDB所有功能的远程存储库,然后在其上堆叠SpinSail组件

共有1个答案

相高谊
2023-03-14

截至目前,GraphDB(8.10.0版)不支持SpinSail。GraphDB的下一个版本正在考虑这样的选项。

 类似资料:
  • rdf4j有一个问题:我想从GraphDB存储库“Feed”中删除所有以为谓词的三元组。 第一个查询验证是否存在一个三元组,参数作为主语,作为谓词,参数是否有object,并且是否有效。如果我的存储库中不存在此语句,则第二个查询开始,它应该删除所有三元组,将作为谓词,将作为主语,但它不起作用,问题是什么? 下面是代码: 错误代码为:"Missing参数:查询",服务器响应为:"400错误请求"

  • 我注意到,与RDF4J相比,GraphDB不允许在存储库ID中使用点。我们有包含一些分类法的版本化存储库。版本号用于存储库ID,例如:。 虽然这在RDF4J中运行良好,但我必须在GraphDB中以不同的方式调用这样的存储库,例如。我希望能够在RDF4J和GraphDB上使用相同的查询集和联邦(调用引用分类库),以便根据用例在两者之间切换。在RDF4J中,我可以通过让一个无版本ID的联邦存储指向特定

  • 问题内容: 任何人都可以用C,C ++和Java清楚地解释一下。什么都在堆栈上,什么都在堆上以及何时分配。 我所知道的, 每个函数调用的所有局部变量(无论是基元,指针还是引用变量)都在新的堆栈框架上。 使用new或malloc创建的所有内容都会进入堆。 我对几件事感到困惑。 是在堆上创建的对象成员的引用/基元是否也存储在堆上? 以及在每个框架中递归创建的方法的那些本地成员呢?它们都在堆栈上吗?如果

  • 我试图以编程方式(通过SPARQL查询或restendpoint)重命名ontotext graphdb存储库。 我可以使用这里记录的以下SPARQL删除旧存储库并插入新存储库,但是这会删除旧存储库中的所有数据 我可以手动将索引文件复制到这个新的存储库位置,但是是否有内置的gradb功能来完成此操作。

  • 所以我有一个企业存储库,那里有已经部署的主POM。现在我有其他项目,我需要单独安装,但他们有父pom。 每当我进行mvn清理安装时,我都无法找到父pom的工件。 我的本地设置。xml为central定义了镜像,因为我假设maven首先尝试在relativePath中搜索父pom,然后是本地repo,最后是远程repo。父POM具有所有提到的存储库和分发详细信息,因此其他项目或本地设置中不存在这些回

  • 我正在尝试在artiFactory OSS实例(版本为5.4.5)上设置一些Maven智能远程存储库。我按照https://www.jfrog.com/confluence/display/RTF/Smart远程存储库的指南并将远程存储库配置如下: 封装类型:Maven 存储库密钥:foo-repo 网址:http://artifactory.mycompany.com/artifactory/a