在ARQ、TDB和命名图的命令行工具的连接中有一种奇怪的行为。如果通过命名图中的tdbloader导入数据,则不能通过SPARQL SELECT查询中的Graph子句查询数据。但是,当SPARQL INSERT将数据插入到同一个图中时,此查询是可能的。
我有以下汇编程序描述文件tdb.ttl
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ja: <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix tdb: <http://jena.hpl.hp.com/2008/tdb#> .
[] ja:loadClass "com.hp.hpl.jena.tdb.TDB" .
tdb:DatasetTDB rdfs:subClassOf ja:RDFDataset .
tdb:GraphTDB rdfs:subClassOf ja:Model .
[] rdf:type tdb:DatasetTDB ;
tdb:location "DB" ;
.文件data.ttl中有一个数据集
<a> <b> <c>.现在,我将使用tdbloader插入这个数据,然后在命名的图形数据中插入SPARQL插入的另一个三元组。
tdbloader --desc tdb.ttl --graph data data.ttl
update --desc tdb.ttl "INSERT DATA {GRAPH <data> {<d> <e> <f>.}}"现在,可以通过以下方式使用SPARQL查询数据:
$arq --desc tdb.ttl "SELECT * WHERE{ GRAPH ?g {?s ?p ?o.}}"
----------------------------
| s | p | o | g |
============================
| <a> | <b> | <c> | <data> |
| <d> | <e> | <f> | <data> |
----------------------------一切看起来都很完美。但是现在我只想查询这个指定的图形数据。
$ arq --desc tdb.ttl "SELECT * WHERE{ GRAPH <data> {?s ?p ?o.}}"
-------------------
| s | p | o |
===================
| <d> | <e> | <f> |
-------------------为什么从tdbloader导入的数据丢失?这个查询有什么问题?如何才能从这两种进口产品中得到结果?
发布于 2013-09-19 13:19:49
请尝试以下查询:
PREFIX : <data>
SELECT * { { ?s ?p ?o } UNION { GRAPH ?g { ?s ?p ?o } } }输出是
----------------------------
| s | p | o | g |
============================
| <a> | <b> | <c> | <data> |
| <d> | <e> | <f> | : |
----------------------------或尝试:
tdbquery --loc DB --file Q.rq -results srj以不同的形式得到结果。
文本输出使事物看起来很漂亮,但是两种不同的东西以<data>结尾。
你看到的是
tdbloader --desc tdb.ttl --graph data data.ttl使用data就像命名图形一样。但
INSERT DATA {GRAPH <data> {<d> <e> <f>.}}执行完整的SPARQL解析,并对基本URI进行解析,可能类似于file://*currentdirectory*。
在文本打印时,URI会被缩写,包括使用基。因此,原始data (来自tdbloader)和file:///path/data都以<data>的形式出现。
PREFIX : <data>为文本输出提供了一种不同的方式将其编写为:。
最后,尝试:
BASE <http://example/>
SELECT * { { ?s ?p ?o } UNION { GRAPH ?g { ?s ?p ?o } } }它将基URI设置为“不在数据URI附近的位置”,因此可以通过基URI关闭良好的格式设置:
----------------------------------------------------------------------------------------------------------------
| s | p | o | g |
================================================================================================================
| <file:///home/afs/tmp/a> | <file:///home/afs/tmp/b> | <file:///home/afs/tmp/c> | <data> |
| <file:///home/afs/tmp/d> | <file:///home/afs/tmp/e> | <file:///home/afs/tmp/f> | <file:///home/afs/tmp/data> |
----------------------------------------------------------------------------------------------------------------https://stackoverflow.com/questions/18891690
复制相似问题