SPARQL 的自旋表示



是否有一个API可以帮助将SPIN表示(SPARQL查询)转换回其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 .
}

提前谢谢。

我知道两个基于 jena 的 API 可以与 SPIN 一起使用。

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

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

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

这种方法的一个演示是来自ONT-API测试范围的SpinTransformer,它将基于SPARQL的查询转换为具有sp:text的等效形式。

相关内容

  • 没有找到相关文章

最新更新