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

如何将SPARQL/SPIN查询/规则从Java转换为RDF结构?

柳培
2023-03-14

我一直在使用TopQuadran Composer Free Edition(TBC FE)将SPARQL/SPIN规则(主要是SPIN构造函数)嵌入到存储为RDF的OWL本体中。这个过程的一部分是SPARQL源代码根据http://spinrdf.org/sp.中指定的模式http://spinrdf.org/sp.html在RDF结构中标记/编码。正是这个结构实际上被RDF4J解释来运行SPIN规则。

我还将RDF4J用作我的三重存储、推理器、SPARQLendpoint和旋转规则引擎。此外,我正在生成自定义Java代码和GUI来操作我的数据和规则。

我的问题是,我可以在Java中使用什么来将SPARQL/SPIN源代码编码为RDF?请注意,我不是问如何对查询结果进行编码(这在另一个stackoverflow问题/响应中得到了回答),而是问如何对查询本身进行编码。原因是我希望能够从自己的Java代码中编辑自旋规则,而不是仅仅依赖TBC FE。

还要注意,我知道存储原始SPARQL查询文本的选项。然而,我的经验是,这没有得到正确的解释,而标记化/结构化RDF得到了正确的解释。因此,我必须使用结构化RDF。

我希望大部分用于编码的Java代码都已经编写好了,也许是作为ApacheJena的一部分。我只需要一个指向哪里的指针。

谢谢!

PS:下面是TBC FE编码的示例自旋构造函数的开始。它包括SPARQL/SPIN源代码的原始sp:text和结构化RDF的开头(在sp:text块之后)。我需要能够使用Java从SPARQL源代码生成结构化RDF。

     <sp:Construct>
        <sp:text rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
        ># [enabled] &lt;http://www.disa.mil/dso/a2i/ontologies/PBSM/Interface/Pub7#Pub7Proposal_makeRxSCMPointSurface&gt; construct an SCM Point Surface (zero radius) from supporting rx data items under an SCM receiver model
CONSTRUCT {
    ?this soo:hasSCMReceiverModel ?receiverModelURI . 
    ?receiverModelURI soo:hasSCMPointSurfaceLocation ?pointSurfaceURI .
    ?pointSurfaceURI soo:SCMPointSurfaceHasPoint ?pointURI .&#xD;
    ?pointSurfaceURI a soo:SCMPointSurfaceLocation .
}
WHERE {
    ?this pub7:pub7ProposalHasDataItem ?rxRadiusDataItem .
    ?rxRadiusDataItem a pub7:Pub7DataItem406 .
    ?rxRadiusDataItem soo:hasSCMRadius ?radiusURI .
    ?radiusURI Nuvio:hasDataValue ?radiusValue .
    FILTER (?radiusValue = 0.0000) .
    ?this pub7:pub7ProposalHasDataItem ?rxPointDataItem .
    ?rxPointDataItem a pub7:Pub7DataItem403 .
    ?rxPointDataItem soo:hasSCMPointLocation ?pointURI .
    BIND (URI(CONCAT(str(?this), "_rxModel")) AS ?newReceiverModelURI) .
    BIND (IF(bound(?existingReceiverModelURI), ?existingReceiverModelURI, ?newReceiverModelURI) AS ?receiverModelURI) .
    BIND (URI(CONCAT(str(?receiverModelURI), "_pointSurface")) AS ?pointSurfaceURI) .
}</sp:text>
        <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
        >[enabled] &lt;http://www.disa.mil/dso/a2i/ontologies/PBSM/Interface/Pub7#Pub7Proposal_makeRxSCMPointSurface&gt; construct an SCM Point Surface (zero radius) from supporting rx data items under an SCM receiver model</rdfs:comment>
        <sp:templates rdf:parseType="Collection">
          <rdf:Description>
            <sp:object rdf:parseType="Resource">
              <sp:varName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
              >receiverModelURI</sp:varName>
            </sp:object>
            <sp:predicate rdf:resource="http://www.disa.mil/dso/a2i/ontologies/PBSM/Sharing/SpectrumOperationsOntology#hasSCMReceiverModel"/>
            <sp:subject rdf:resource="http://spinrdf.org/spin#_this"/>
          </rdf:Description>
          <rdf:Description>
            <sp:object rdf:parseType="Resource">
              <sp:varName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
              >pointSurfaceURI</sp:varName>
            </sp:object>
            <sp:predicate rdf:resource="http://www.disa.mil/dso/a2i/ontologies/PBSM/Sharing/SpectrumOperationsOntology#hasSCMPointSurfaceLocation"/>
            <sp:subject rdf:parseType="Resource">
              <sp:varName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
              >receiverModelURI</sp:varName>
            </sp:subject>
          </rdf:Description>
          <rdf:Description>
            <sp:object rdf:parseType="Resource">
              <sp:varName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
              >pointURI</sp:varName>
            </sp:object>
            <sp:predicate rdf:resource="http://www.disa.mil/dso/a2i/ontologies/PBSM/Sharing/SpectrumOperationsOntology#SCMPointSurfaceHasPoint"/>
            <sp:subject rdf:parseType="Resource">
              <sp:varName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
              >pointSurfaceURI</sp:varName>
            </sp:subject>
          </rdf:Description>
          <rdf:Description>
            <sp:object rdf:resource="http://www.disa.mil/dso/a2i/ontologies/PBSM/Sharing/SpectrumOperationsOntology#SCMPointSurfaceLocation"/>
            <sp:predicate rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#type"/>
            <sp:subject rdf:parseType="Resource">
              <sp:varName rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
              >pointSurfaceURI</sp:varName>
            </sp:subject>
          </rdf:Description>
        </sp:templates>

共有1个答案

金宣
2023-03-14

正如@AKSW所指出的,与Jena库相结合的SPIN API可以完成我所追求的目标。TopBraid的Spinparsing示例。java非常接近我想要做的事情。

我确实需要将一个SPIN库和几个Jena库文件. jar文件)添加到我的Eclipse项目和构建路径中。我知道有自动化的方法来处理这些依赖关系,但是现在我是手动处理的。对于那些手动操作的人,这些文件列在下面...

SPIN库:

  • spin-2.0.0.jar

ApacheJena库(最好使用注释中建议的3.0.1):

  • 耶拿-arq-3.4。0.jar
  • 耶拿-base-3.4。0.jar
  • jena-cmds-3.4。0.jar
  • jena-core-3.4。0.jar
  • 耶拿-iri-3.4。0.jar
  • jena-rdfconnection-3.4。0.jar
  • 耶拿番石榴-3.4。0.jar
  • jena-tdb-3.4。0.jar
  • libthrift-0.9。1.jar
  • xercesImpl-2.7。1.jar
 类似资料:
  • 使用SPIN API(http://topbraid.org/spin/api/)并从https://github.com/spinrdf/spinrdf/blob/master/src-examples/org/topbraid/spin/examples/SPINParsingExample.java的示例代码开始工作,我试图在示例中添加对rdfs:注释和旋转:文本的处理。Topbraid C

  • 我使用了cakephp Mysql到mongodb查询组件,即将Mysql查询转换到mongodb中,但是当查询有多个括号时代码停止工作,我还尝试将http://www.querymongo.com/site上的查询转换为相同的问题,

  • 问题内容: 在这个问题上的任何帮助将不胜感激。 所以基本上我想对我的SQL数据库运行查询并将返回的数据存储为Pandas数据结构。 我已附上查询代码。 我正在阅读有关Pandas的文档,但是在识别查询的返回类型时遇到了问题。 我试图打印查询结果,但没有提供任何有用的信息。 谢谢!!!! 因此,我有点想了解变量“ resoverall”的格式/数据类型是什么,以及如何将其与PANDAS数据结构一起使

  • 我想在JPA 2.1中将“命名查询”转换为“SQL查询”,并在运行之前对其进行更改。 例如,我有一个命名查询:从CU所在的客户中选择CU。代码=?1,我希望在PAR之后获得查询并对其进行转换和编辑(例如添加模式名称)并创建此查询:从db1.cc1cust cu中选择*其中cu.cc1cod=?1. 我该怎么做? 问候

  • 问题内容: 我需要将此查询从MySQL格式转换为SQLite。我正在尝试自己,但发现了一些困难。 在SQLite中,curdate()和interval函数不存在。 问题答案: 这是基本语法: 我忽略了该子句,因为这些日期是过去1000多个日期,因此他们无论如何都不会选择任何内容。