本文介绍了在RDF4J中键入的文字是否很棘手?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在RDF中,我可以拥有一个由单个属性绑定到多个文字值的实体。也可以键入这些值以增加清晰度。
:dumpTruck :weight "heavy"^^xsd:string .
:dumpTruck :weight "36000"^^xsd:integer .
在SPARQL中,我可以只查询我想要的类型
SELECT ?w
WHERE
{ :dumpTruck :weight ?w
FILTER ( datatype(?w) = xsd:integer )
}
RDF4J中是否有类似getStatement的内容可以受这样的数据类型约束?
推荐答案
不可能有先验约束,但您可以根据数据类型将结果后处理到过滤。例如,您可以按照以下思路使用一些内容(未经测试,但希望您能理解要点):
QueryResults.stream(conn.getStatements(dumptruck, weight, null))
.filter(s -> ((Literal)s.getObject()).getDatatype().equals(XMLSchema.INTEGER))
.collect(Collectors.toList());
或者,也可以先插入Model
,然后插入过滤:
Model m = QueryResults.asModel(conn.getStatements(dumptruck, weight, null));
List intValues = Models.objectLiterals(m).stream().filter(l -> l.getDatatype().equals(XMLSchema.INTEGER)).collect(Collectors.toList());
我确信还有几个其他/更方便的快捷方式我还没有想过。然而,RDF4J docs还有教程和示例可供选择。
这篇关于在RDF4J中键入的文字是否很棘手?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!