使用jena进行特定的SPARQL查询

时间:2013-08-28 14:24:02

标签: sparql jena

我使用apache-jena 2.10.2命令行工具并尝试在我的图表中插入一些数据:

tdbupdate --loc /Users/graph  "INSERT DATA { <http://de.dbpedia.org/resource/Mais>   <http://ch.ingredientmatching.graph/eaternitySynonym> 15 }"

不幸的是它没有添加任何东西。如果我在谓词中改变某些内容,例如删除或更改一个字符,然后它的工作原理。 以下作品:

tdbupdate --loc /Users/graph  "INSERT DATA { <http://de.dbpedia.org/resource/Mais>   <http://ch.ingredientmatching.graph/eaternitySynonyn> 15 }"

我改变了最后一个角色:eaternitySynonyn中的eaternitySynonym。为了看它是否有效,我做了:

tdbquery --loc /Users/graph  "SELECT * WHERE { <http://de.dbpedia.org/resource/Mais> ?p ?o }"

并查看它是否在输出中。

请告诉我我做错了什么。

1 个答案:

答案 0 :(得分:1)

我试图重现你描述的问题,但我不能。以下控制台脚本显示了空数据文件的创建,为其创建TDB存储,执行您说不起作用的更新,以及执行询问所有三元组的查询,该三元组返回三元组那是插入的。

$ tdbloader2 --loc graph data.n3 
 11:05:38 -- TDB Bulk Loader Start
 11:05:38 Data phase
INFO  Load: data.n3 -- 2013/08/28 11:05:43 EDT
INFO  Total: 0 tuples : 0.12 seconds : 0.00 tuples/sec [2013/08/28 11:05:43 EDT]
 11:05:43 Index phase
 11:05:43 Index phase end
 11:05:43 -- TDB Bulk Loader Finish
 11:05:43 -- 5 seconds
$ tdbupdate --loc graph "INSERT DATA { <http://de.dbpedia.org/resource/Mais>   <http://ch.ingredientmatching.graph/eaternitySynonym> 15 }"
$ tdbquery --loc graph  "SELECT * WHERE { <http://de.dbpedia.org/resource/Mais> ?p ?o }"
--------------------------------------------------------------
| p                                                     | o  |
==============================================================
| <http://ch.ingredientmatching.graph/eaternitySynonym> | 15 |
--------------------------------------------------------------

除非您的设置中还有其他内容没有描述,否则看起来应该可行。以上版本使用以下版本的Jena,ARQ和TDB执行:

$ tdbquery --version
Jena:       VERSION: 2.10.1
Jena:       BUILD_DATE: 2013-05-11T22:05:51+0100
ARQ:        VERSION: 2.10.1
ARQ:        BUILD_DATE: 2013-05-11T22:05:51+0100
RIOT:       VERSION: 2.10.1
RIOT:       BUILD_DATE: 2013-05-11T22:05:51+0100
TDB:        VERSION: 0.10.1
TDB:        BUILD_DATE: 2013-05-11T22:05:51+0100