1

是否有 API 可以帮助将(SPARQL 查询的)SPIN 表示转换回其 SPARQL 查询形式?

从:

[ a                              <http://spinrdf.org/sp#Select> ;
  <http://spinrdf.org/sp#where>  ( [ <http://spinrdf.org/sp#object>  [ <http://spinrdf.org/sp#varName>
                                                       "o"^^<http://www.w3.org/2001/XMLSchema#string> ] ;
                                     <http://spinrdf.org/sp#predicate>
                                             [ <http://spinrdf.org/sp#varName>
                                                       "p"^^<http://www.w3.org/2001/XMLSchema#string> ] ;
                                     <http://spinrdf.org/sp#subject>
                                             [ <http://spinrdf.org/sp#varName>
                                                       "s"^^<http://www.w3.org/2001/XMLSchema#string> ]
                                   ] )
] .

至:

SELECT *
WHERE {
    ?s ?p ?o .
}

提前致谢。

4

1 回答 1

1

我知道两个基于耶拿的 API 可用于 SPIN。

您可以使用org.topbraid:shacl:1.0.1基于jena-arq:3.0.4或在评论中提到的org.spinrdf:spinrdf:3.0.0-SNAPSHOT,它是第一个的分支,但具有更改的命名空间和更新的依赖项。

请注意,第一个(原始)API 也可能适用于现代耶拿(3.13.x),至少您的任务可以在这种情况下解决。第二个 API 还没有 maven 版本,但可以通过 jitpack 包含到您的项目中。

要解决问题,您需要找到根org.apache.jena.rdf.model.Resource并使用耶拿多态(即操作)将其转换为org.topbraid.spin.model.Select(或)。然后将返回带有模型前缀的所需查询。请注意,所有人物都已通过静态初始化包含在模型中。org.spinrdf.model.Selectorg.apache.jena.rdf.model.RDFNode#as(Class)#toString()

这种方法的一个演示是来自 ONT-API 测试范围的SpinTransformersp:text ,它将基于 SPARQL 的查询转换为具有.

于 2019-10-29T07:10:43.543 回答