首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查询Jena TDB上的模型

如何查询Jena TDB上的模型
EN

Stack Overflow用户
提问于 2014-07-16 14:30:51
回答 1查看 1.2K关注 0票数 0

我有个问题。

我试图在Jena TDB上加载我的RDF文件。

我写了这段代码:

代码语言:javascript
复制
public void store(){
    String directory = "C:\\tdb";
    String source = "C:\\file1.rdf";
    String source1 = "C:\\file2.rdf";
    Dataset dataset = openTDB(directory);
    Model tdb = loadModel(source, dataset);
    dataset.addNamedModel("File1", tdb);

    Model tdb1 = loadModel(source1, dataset);
    dataset.addNamedModel("File2", tdb1);

    queryTDB(tdb, dataset);
    queryTDB(tdb1, dataset);

    tdb.close();
    tdb1.close();
    dataset.close();
}

public Dataset openTDB(String directory) {
    // open TDB dataset
    Dataset dataset = TDBFactory.createDataset(directory);
    return dataset;
}

public Model loadModel(String source, Dataset dataset) {

    Model tdb = dataset.getDefaultModel();
    FileManager.get().readModel( tdb, source, "RDF/XML" );
    return tdb;
}

特别是,我有两个文件,我想在Jena TDB上加载这些文件。我在网上读到,我可以用"addNamedModel“给我的模型添加一个名字。在这样做时,在上面的代码中,我添加了名称"File1“和"File2”。

现在,我想查询这个数据集,并试图编写以下代码:

代码语言:javascript
复制
public void queryTDB(Model tdb, Dataset dataset) {

    String queryStr = "SELECT * { ?s ?p ?o }";

    Query query = QueryFactory.create(queryStr);
    QueryExecution qexec = QueryExecutionFactory.create(query, tdb);
    /*Execute the Query*/
    ResultSet results = qexec.execSelect();
    ResultSetFormatter.out(results) ;
    qexec.close();
}

这段代码可以工作,但我想知道如何才能获得名为"File1“(或"File2")的模型的查询结果。实际上,通过这样编写的查询,我得到了这两个模型的结果。

我怎么能意识到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-16 14:40:58

你不是用绝对的虹膜来命名你的图,所以我不知道你的图形名是什么。您可以使用这样的查询来帮助找出它们是什么:

代码语言:javascript
复制
select * {
  graph ?g {  
    ?s ?p ?o
  }
}

完成之后,您可以继续使用graph ?g { … }模式,或者使用from named在查询中指定一个图形:

代码语言:javascript
复制
select *
from named <name-of-graph>
{
  ?s ?p ?o
}

select * {
  graph <name-of-graph> {  
    ?s ?p ?o
  }
}

有关详细信息和更多示例,请参见13.2指定RDF数据集13.3查询数据集

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24783486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档