2017-03-03 27 views
0

我在我的数据集中有很多模型,我想查询指定的模型,我在SPARQL查询中使用了graph关键字,但它给了我一个空结果集 任何人都可以帮助我, ?从TDB中的数据集查询模型

public static void SparqlForSentencesDuplicates() 
{ 

    String querystr= "PREFIX aapi:<http://rdf.alchemyapi.com/rdf/v1/s/aapi-schema#> " 

      + "select ?s where {" 
      +"graph <RelationModel3> {" 
      + "?id aapi:RelationSentence ?s } " 
      +"}"; 

    Dataset ds=tdbconn.ds; 
    ds.begin(ReadWrite.READ); 
    QueryExecution qexe= QueryExecutionFactory.create(querystr, ds); 
    try { 

     ResultSet result= qexe.execSelect(); 
     ResultSetFormatter.out(result); 
    }finally{ 
     qexe.close(); 
     ds.close(); 
    } 

} 

,并在这里,我怎么能加载模型

public Model loadModel(String modelName, StringBuilder Builder) 
    { 
Model model = null; 

ds.begin(ReadWrite.WRITE); 
try 
{ 
    //model = ds.getNamedModel(modelName); 
    model = ModelFactory.createDefaultModel(); 

    model.read(new ByteArrayInputStream(Builder.toString().getBytes()), null); 
    ds.addNamedModel(modelName, model); 
    ds.commit(); 
} 
finally 
{ 
    ds.end(); 
} return model;} 

回答

0

graph <RelationModel3>有一个相对URI - 这将是由分析器成一个完整的URI来解决。

解析并打印查询以查看查询的真实外观。

数据中图的URI也不应该是相对URI。

与检查您的数据:

SELECT * { GRAPH ?g {} } 

并在必要时修正。