- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要对 DBpedia 执行查询:
SELECT DISTINCT ?poi ?lat ?long ?photos ?template ?type ?label WHERE {
?poi <http://www.w3.org/2000/01/rdf-schema#label> ?label .
?poi <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat .
?poi <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?long .
?poi <http://dbpedia.org/property/hasPhotoCollection> ?photos .
OPTIONAL {?poi <http://dbpedia.org/property/wikiPageUsesTemplate> ?template } .
OPTIONAL {?poi <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?type } .
FILTER ( ?lat > x && ?lat < y &&
?long > z && ?long < ω &&
langMatches( lang(?label), "EN" ))
}
我猜这些信息分散在不同的转储 (.nt) 文件中,并且 SPARQL 端点以某种方式为我们提供了一个结果集。我需要在本地下载这些不同的 .nt 文件(不是所有 DBpedia),只执行一次查询并将结果存储在本地(我不想使用 SPARQL 端点)。
我从 this post 读起来有点困惑:
So, you can load the entire DBPedia data into a single TDB location on disk (i.e. a single directory). This way, you can run SPARQL queries over it.
如果我们有三个 .nt DBpedia 文件,我如何将 DBpedia 加载到单个 TDB 位置?我们如何对这些 .nt 文件应用上述查询? (任何代码都会有所帮助。)
例子,这样错了吗?
String tdbDirectory = "C:\\TDB";
String dbdump1 = "C:\\Users\\dump1_en.nt";
String dbdump2 = "C:\\Users\\dump2_en.nt";
String dbdump3 = "C:\\Users\\dump3_en.nt";
Dataset dataset = TDBFactory.createDataset(tdbDirectory);
Model tdb = dataset.getDefaultModel(); //<-- What is the default model?Should I care?
//Model tdb = TDBFactory.createModel(tdbdirectory) ;//<--is this prefered?
FileManager.get().readModel( tdb, dbdump1, "N-TRIPLES" );
FileManager.get().readModel( tdb, dbdump2, "N-TRIPLES" );
FileManager.get().readModel( tdb, dbdump3, "N-TRIPLES" );
String q = "my big fat query";
Query query = QueryFactory.create(q);
QueryExecution qexec = QueryExecutionFactory.create(query, tdb);
ResultSet results = qexec.execSelect();
while (results.hasNext()) {
//do something significant with it
}
qexec.close()
tdb.close() ;
dataset.close();
"dataset.getDefaultModel"
(将默认图形作为 Jena Model
)。这个声明有效吗?我们是否需要创建数据集来执行查询,还是应该使用 TDBFactory.createModel(tdbdirectory)
?最佳答案
让 Jena 在本地建立索引:
/** The Constant tdbDirectory. */
public static final String tdbDirectory = "C:\\TDBLoadGeoCoordinatesAndLabels";
/** The Constant dbdump0. */
public static final String dbdump0 = "C:\\Users\\Public\\Documents\\TDB\\dbpedia_3.8\\dbpedia_3.8.owl";
/** The Constant dbdump1. */
public static final String dbdump1 = "C:\\Users\\Public\\Documents\\TDB\\geo_coordinates_en\\geo_coordinates_en.nt";
...
Model tdbModel = TDBFactory.createModel(tdbDirectory);<\n>
/*Incrementally read data to the Model, once per run , RAM > 6 GB*/
FileManager.get().readModel( tdbModel, dbdump0);
FileManager.get().readModel( tdbModel, dbdump1, "N-TRIPLES");
FileManager.get().readModel( tdbModel, dbdump2, "N-TRIPLES");
FileManager.get().readModel( tdbModel, dbdump3, "N-TRIPLES");
FileManager.get().readModel( tdbModel, dbdump4, "N-TRIPLES");
FileManager.get().readModel( tdbModel, dbdump5, "N-TRIPLES");
FileManager.get().readModel( tdbModel, dbdump6, "N-TRIPLES");
tdbModel.close();
查询耶拿:
String queryStr = "dbpedia query ";
Dataset dataset = TDBFactory.createDataset(tdbDirectory);
Model tdb = dataset.getDefaultModel();
Query query = QueryFactory.create(queryStr);
QueryExecution qexec = QueryExecutionFactory.create(query, tdb);
/*Execute the Query*/
ResultSet results = qexec.execSelect();
while (results.hasNext()) {
// Do something important
}
qexec.close();
tdb.close() ;
关于java - 使用 Jena TDB 在本地加载 DBpedia?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16832862/
我正在尝试使用 TDB 使用 Jena 在 Java 中进行查询。所以基本上我得到了一个 n3 文件名 song.n3 并且使用这个文件我想将它与 TDB 一起使用。所以我创建了一个在我的 Java1
我必须为 DBpedia 中的一组 1500 个实体序列化一些特定属性(大约十部电影的属性)。因此,对于每个实体,我运行 sparql 查询以检索它们,之后,对于每个 ResultSet,我使用默认的
使用:jena-fuseki-1.1.0,apache-jena-2.12.0 我想要达到的目标和我目前的状态: 我正在尝试使用 dbpedia Persondata(英语和德语)、跨语言链接、图像和
我正在尝试在 java 中查询 jena TDB。我的代码如下。我的 TDB 数据集似乎是空的,因为 model.size()(其中 model 是数据集默认模型)返回 0。我确定它不为空,不过,因为
我正在提供一个数据集,其中包含来自 Fuseki 2 中 TDB 数据集的 10-20 个命名图。 我想使用推理器对我的数据进行推断。我希望看到的行为是每个图中推断的三元组应该出现在这些图中(尽管如果
这是我的配置文件 # Licensed under the terms of http://www.apache.org/licenses/LICENSE-2.0 ## Fuseki Server c
有没有办法通过 Java API 使用 OWL API 访问 Jena TDB? Jena 似乎不支持 OWL-API。除了 RDF API 之外,它还具有一些便利函数 (OntAPI),用于在被视为
我有一个问题。 我正在尝试在 Jena TDB 上加载我的 RDF 文件。 我写了这段代码: public void store(){ String directory = "C:\\tdb"
我目前正在改编一个在内存模型中与 JENA 一起使用的程序,但当我尝试使用 TDB 存储不同的命名模型时会中断。我认为由此产生的行为是 JENA 中的一个错误,但也许我对同一 TDB 中命名模型的假设
我对 Apache Jena TDB 有疑问。基本上我创建了一个新的数据集,将数据从 RDF/XML 文件加载到名为“http://example.com/model/filename”的命名模型中,
我有一个问题要问你: 我想在我的 Jena TDB TripleStore 上加载一个文件。我的文件很大,大约80Mb,大约700000个三倍RDF。当我尝试加载它时,执行停止工作或需要很长时间。 我
我正在使用 Jena API 在 Jena TDB 中插入和更新三元组。我的设计是这样的,每个插入操作都在事务控制之内。例如: dataset.begin (ReadWrite.WRITE) try
我有一个相当小的图,其中包含大约 50 万个三元组。我还生成了 stats.opt 文件并在相当快的计算机(四核、16gb ram、ssd 驱动器)上运行我的代码。但是对于我在 OP 界面的帮助下构建
public void createDatabase(){ // Make a TDB-backed dataset String directory = "MyDatabase
我正在使用 Jena TDB (1.1.1) 来存储一组命名图。一切正常,但每当我从数据集中检索命名图时,所有 namespace 前缀信息都会丢失。有没有办法保留原始 RDF 图中的 namespa
是否可以运行 Jena TDB database从 Python 应用程序存储大量 RDF 数据?什么是 Python 的原生替代品? 最佳答案 另一种方法是使用 SPARQL 端点,例如 Apach
我想重写我当前的代码以使用交易。但是,根据 Jena 文档 (http://incubator.apache.org/jena/documentation/tdb/tdb_transactions.h
根据 Apache website TDB“可以用作单台机器上的高性能 RDF 存储”。阅读文档我看不到它存储任何内容的位置。是否只是将每个资源存储在定义目录中其自己的文件中,如 this 中所述教程
我有一个 RDF 文件,其中包含 7MB 和约 80k 语句。 启动应用程序时,我有以下代码,用于检索我需要向用户显示的项目列表: NodeIterator iterator =
我正在开发一个使用 Jena 进行存储(带有 TDB 后端)的应用程序。我正在寻找类似 Squirrel 的东西,它可以让我看到正在存储的内容,运行查询等。这似乎是一个明显需要的东西,但我的(可能措辞
我是一名优秀的程序员,十分优秀!