【问题标题】:creating new triple using sparql query使用 sparql 查询创建新的三元组
【发布时间】:2014-04-03 12:58:17
【问题描述】:

我已尝试执行以下 java 代码以使用 SPARQL CONSTRUCT 功能创建新的三元组。

package jenasemweb;


 import com.hp.hpl.jena.query.QueryExecution;
 import com.hp.hpl.jena.query.QueryExecutionFactory;
 import com.hp.hpl.jena.query.QueryFactory;
 import com.hp.hpl.jena.query.QuerySolution;
 import com.hp.hpl.jena.query.ResultSet;
 import com.hp.hpl.jena.rdf.model.InfModel;
 import com.hp.hpl.jena.rdf.model.Model;
 import com.hp.hpl.jena.rdf.model.ModelFactory;
 import com.hp.hpl.jena.rdf.model.Property;
 import com.hp.hpl.jena.rdf.model.Resource;
 import com.hp.hpl.jena.rdf.model.Statement;
 import com.hp.hpl.jena.rdf.model.StmtIterator;
 import com.hp.hpl.jena.util.FileManager;
 import com.hp.hpl.jena.util.PrintUtil;

    public class SparqlQuery03 {
 public static void main(String [] args) {

 // LOAD Raw Model from URL
 Model myRawModel =
 FileManager.get().loadModel(
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/Houghland.n3", "N3");

 // READ another N3 into the Model
 FileManager.get().readModel(myRawModel,
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/cruz.n3", "N3");

 // READ another N3 into the Model
 FileManager.get().readModel(myRawModel,
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/abraham.n3", "N3");

 // READ another N3 into the Model
 FileManager.get().readModel(myRawModel,
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/akundi.v2.n3", "N3");

 // READ another N3 into the Model
 FileManager.get().readModel(myRawModel,
"http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/bennett.n3", "N3");

 // READ another N3 into the Model
FileManager.get().readModel(myRawModel,
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/hanna.n3", "N3");

 // READ another N3 into the Model
 FileManager.get().readModel(myRawModel,
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/liew_hw2.n3", "N3");

 // READ another N3 into the Model
 FileManager.get().readModel(myRawModel,
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/ramani.n3", "N3");

 // READ another N3 into the Model
 FileManager.get().readModel(myRawModel,
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/rawal.n3", "N3");

 // READ another N3 into the Model
 FileManager.get().readModel(myRawModel,
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/sison.n3", "N3");

 // READ another N3 into the Model
 FileManager.get().readModel(myRawModel,
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/tara.n3", "N3");

 // READ another N3 into the Model
 FileManager.get().readModel(myRawModel,
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/turney.n3", "N3");

 // READ another N3 into the Model
 FileManager.get().readModel(myRawModel,
 "http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/wilson.n3", "N3");

 // Create an RDFS inference model from the Raw Model
 InfModel infmodel = ModelFactory.createRDFSModel(myRawModel);

 // Create a new SPARQL query
 String queryString =
 "PREFIX drc: <http://www.codesupreme.com/onto/cse7392/#> " +
 "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> " +
 "PREFIX foaf: <http://xmlns.com/foaf/0.1/> " +
 "SELECT DISTINCT ?lname ?fname " + // space after last ?var
 "WHERE {" +
 " ?who foaf:lastName ?lname." +
 " ?who foaf:firstName ?fname." +
 " }" +
 "ORDER BY ?lname";

 // create a Jena query from the queryString
 com.hp.hpl.jena.query.Query query = QueryFactory.create(queryString);

 // create a Jena QueryExecution object that knows the query
 // and the N3 over which the query will be run
 QueryExecution qe = QueryExecutionFactory.create(query, infmodel);


 // execute the query - get back a ResultSet
 ResultSet results = qe.execSelect();

 // iterate over the result set
 while(results.hasNext()) {
 QuerySolution sol = results.next();
 System.out.println("Solution:" + sol.toString() );
 }}}

但执行返回以下错误:

Exception in thread "main" org.apache.jena.riot.RiotException: [line: 119, col: 27] Unrecognized: [DOT]
    at org.apache.jena.riot.system.ErrorHandlerFactory$ErrorHandlerStd.fatal(ErrorHandlerFactory.java:136)
    at org.apache.jena.riot.lang.LangEngine.raiseException(LangEngine.java:163)
    at org.apache.jena.riot.lang.LangEngine.exceptionDirect(LangEngine.java:156)
    at org.apache.jena.riot.lang.LangEngine.exception(LangEngine.java:149)
    at org.apache.jena.riot.lang.LangTurtleBase.triplesNodeCompound(LangTurtleBase.java:408)
    at org.apache.jena.riot.lang.LangTurtleBase.triplesNode(LangTurtleBase.java:388)
    at org.apache.jena.riot.lang.LangTurtleBase.objectList(LangTurtleBase.java:350)
    at org.apache.jena.riot.lang.LangTurtleBase.predicateObjectItem(LangTurtleBase.java:288)
    at org.apache.jena.riot.lang.LangTurtleBase.predicateObjectList(LangTurtleBase.java:269)
    at org.apache.jena.riot.lang.LangTurtleBase.triples(LangTurtleBase.java:250)
    at org.apache.jena.riot.lang.LangTurtleBase.triplesSameSubject(LangTurtleBase.java:191)
    at org.apache.jena.riot.lang.LangTurtle.oneTopLevelElement(LangTurtle.java:44)
    at org.apache.jena.riot.lang.LangTurtleBase.runParser(LangTurtleBase.java:90)
    at org.apache.jena.riot.lang.LangBase.parse(LangBase.java:42)
    at org.apache.jena.riot.RDFParserRegistry$ReaderRIOTFactoryImpl$1.read(RDFParserRegistry.java:142)
    at org.apache.jena.riot.RDFDataMgr.process(RDFDataMgr.java:859)
    at org.apache.jena.riot.RDFDataMgr.parse(RDFDataMgr.java:687)
    at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:208)
    at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:141)
    at org.apache.jena.riot.RDFDataMgr.read(RDFDataMgr.java:130)
    at org.apache.jena.riot.adapters.AdapterFileManager.readModelWorker(AdapterFileManager.java:291)
    at com.hp.hpl.jena.util.FileManager.readModel(FileManager.java:369)
    at jenasemweb.SparqlQuery03.main(SparqlQuery03.java:44)

我是新手,非常新。因此,感谢所有帮助。

【问题讨论】:

标签: eclipse sparql jena


【解决方案1】:

该错误与您的 SPARQL 查询无关。这是关于解析文件http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/hanna.n3 的问题(至少在您提供的sn-p 中的44 线上)。
我尝试运行该文件,但在第 36 行(不是 44 行)出现异常,即http://lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/akundi.v2.n3

这可能是 URI 以点结尾的问题,可能在三元组的对象中。您是否有可能使用的是 Jena 2.11.0 或更早版本?

参见https://issues.apache.org/jira/browse/JENA-584 --> 您可以尝试升级到 Jena 2.11.1。

【讨论】:

  • 感谢您的回答;但我使用的是最新版本的耶拿。
  • @user3347859 因此可能是文件中的语法问题或其他错误。查看该文件中第 119 行的内容会很有用。
  • @user3347859 这将很难诊断,因为我们这里没有文件副本,我们可以依靠保持不变。我刚刚拉下lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/rawal.n3,Jena 的rdfcat 毫无问题地阅读它。你有没有告诉我们改变它? :)
  • 不,我没改过
  • 当我删除以下行时: FileManager.get().readModel(myRawModel, "lyle.smu.edu/~coyle/cse7392.semweb/onto/a3/akundi.v2.n3", "N3");感谢 jkbkot 没有错误被返回
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多