如何将 Sparql 查询结果存储到数组中?
Posted
技术标签:
【中文标题】如何将 Sparql 查询结果存储到数组中?【英文标题】:How to store Sparql query results into array? 【发布时间】:2016-03-24 05:48:33 【问题描述】:我想将我的 sparql 查询结果存储到数组中。我该如何存储它?这是我的java代码。是否可以在java中使用datareader?
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.RDFNode;
import com.hp.hpl.jena.util.FileManager;
public class emotion
public static void main(String[] args)
// TODO Auto-generated method stub
sparqltest();
static void sparqltest()
FileManager.get().addLocatorClassLoader(emotion.class.getClassLoader());
Model model= FileManager.get().loadModel("C:/Users/avg/workspacejena32/Jena/bin/emotion.rdf");
//System.out.println("Connected...");
String queryString="PREFIX xsd: <http://www.semanticweb.org/avg/ontologies/2016/2/untitled-ontology-5#>" +
"PREFIX owl: <http://www.w3.org/2002/07/owl#>" +
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>" +
"SELECT * " +
"WHERE" +
" xsd:angry xsd:says ?x";
Query query= QueryFactory.create(queryString);
QueryExecution qexec=QueryExecutionFactory.create(query, model);
try
ResultSet rs = qexec.execSelect();
for ( ; rs.hasNext() ; )
QuerySolution soln = rs.nextSolution() ;
RDFNode a = soln.get("x") ;
// avg = a.asNode().getLocalName();
System.out.println(a.asNode().getLocalName());
finally
qexec.close();
我得到的结果如下,我想将其存储在数组或其他东西中,我可以从中一一调用以供将来使用。
selfish
mad
【问题讨论】:
还有什么问题?你知道如何创建例如ArrayList
并向其添加元素?
不,先生,我不知道如何添加元素。你能帮帮我吗?
@AshutoshVikramsingGirase 创建 ArrayList 确实是非常基本的 Java 编程。如果您不知道如何做到这一点,那么您最好的做法可能是编写“Java 初学者”教程。在可以爬行之前不要尝试跑步:)
【参考方案1】:
应该这样做。
List<RDFNode> result = new ArrayList<RDFNode>();
ResultSet rs = qexec.execSelect();
for ( ; rs.hasNext() ; )
QuerySolution soln = rs.nextSolution() ;
RDFNode a = soln.get("x") ;
// avg = a.asNode().getLocalName();
System.out.println(a.asNode().getLocalName());
result.add(a);
【讨论】:
它给了我list can not be resolved to type
和ArrayList can not be resolved to type
的错误。这对 java 6 好吗,因为我使用的是 java 6。Arraylist 是否适用于 java 6?
请添加导入。尝试导入 java.util.*;位于文件顶部的某个位置。
是的,它现在可以工作了。但我的疑问是我现在如何访问存储的元素?我对arraylist不熟悉。
无意冒犯,但也许您应该阅读 Java 介绍教程之类的?如何访问 List 中的内容在这里docs.oracle.com/javase/8/docs/api/java/util/List.html
我认为你需要学习 Java。这是非常基本的东西,包含在任何教程中。即使使用搜索引擎也会提供大量页面来解释它。以上是关于如何将 Sparql 查询结果存储到数组中?的主要内容,如果未能解决你的问题,请参考以下文章