Java 从SPARQL结果集中检索数据

Java 从SPARQL结果集中检索数据,java,sparql,rdf,jena,owl,Java,Sparql,Rdf,Jena,Owl,我有一个本体,其中包含对象(NamedIndividual)及其坐标(X,Y),以datatype的形式。 个体看起来是这样的: 20 33 我执行SPARQL查询: 前缀rdf: 前缀owl: 前缀rdfs: 前缀xsd: 前缀到: 选择?对象?X?Y 何处{ ?对象rdf:type owl:NamedIndividual ;在:X?X上 ;上:Y?Y 过滤正则表达式(str(?objects),“Door1”) } 我在Eclipse中的查询如下: Model Model=FileMa

我有一个本体,其中包含对象(
NamedIndividual
)及其坐标(X,Y),以
datatype
的形式。 个体看起来是这样的:


20
33
我执行SPARQL查询:

前缀rdf:
前缀owl:
前缀rdfs:
前缀xsd:
前缀到:
选择?对象?X?Y
何处{
?对象rdf:type owl:NamedIndividual
;在:X?X上
;上:Y?Y
过滤正则表达式(str(?objects),“Door1”)
}
我在Eclipse中的查询如下:

Model Model=FileManager.get().loadModel(“/home/aidos/workspace/OntologicalFramework/files/ontologys/NewOnt.owl”);
String queryString=“//我在上面以字符串形式编写的查询”
Query=QueryFactory.create(queryString);
QueryExecution qexec=QueryExecutionFactory.create(查询,模型);
ResultSet results=qexec.execSelect();
ResultSetFormatter.out(System.out、结果、查询);
这将返回打印到IDE控制台的结果集,如:

--------------------------
|对象| X | Y|
==========================
|打开:窗口1 | 56 | 28|
--------------------------
我需要的是得到那些整数56和28,并将它们存储在
intx
inty
中。 有人能帮我弄明白我怎样才能得到它们吗? 在调试过程中,我在
ResultSet result
的分支中找到了名为
dataset
DataSetImpl
,每个都通过使用该方法提供了对每一行的访问。然后,您可以使用类似的方法来获取具有指定名称的变量的文本值。还有其他一些获取变量值的方法:get(String)返回RDFNodegetResource(String)返回资源


在这种情况下,您可以使用get()getLiteral(),因为数字是文字,因此是RDF节点,但是您不能使用getResource(),因为数字不是资源(即不是IRIs)。

很好的解释。一些补充:首先,对于无法确定是否会返回一个文本或资源的情况,我建议使用
get()
,并在转换之前检查它是否是
RDFNode
对象上的文本。其次,为了避免上面的示例代码出现问题,一旦打印了结果集,就不能再次对其进行迭代。啊,最后但并非最不重要的是,Jena ARQ文档是一个很好的起点。