在Ubuntu中使用SWI-Prolog(多线程,64位,版本5.10.4),我试图获得 rdf是rdf / 3谓词的三倍,遵循其中一个教程(实际上,所有这些都是 告诉我相同的,但下面的例子是http://cliopatria.swi-prolog.org/tutorial/Parsia/)。然而,虽然其他谓词似乎运作良好,但rdf / 3却什么都没有:
?- [library(semweb/rdf_db)].
...
true
?- [library(semweb/rdf_http_plugin)].
...
true
?- rdf_load('http://dbpedia.org/resource/Amsterdam').
% Parsed "http://dbpedia.org/resource/Amsterdam" in 0.32 sec; 4,194 triples
true.
?- rdf(S, P, O).
false.
?- rdf_graph(G).
G = 'http://dbpedia.org/resource/Amsterdam'.
我得到了S的结果一次或两次,如果我为P和O设置常量(但我忘了怎么做了。)。我不确定,如果这是我的swipl版本中的一个错误,或者我忘记了一些重要的东西或一些微不足道的东西。 Prolog和库是从标准的Ubuntu 12.10 repo安装的。
(我没有对semweb库进行任何测试,因为我不知道怎么做,因为我不是每天都在Prolog中编程)
答案 0 :(得分:1)
我正在使用从源代码安装的SWI-Prolog,我可以在你的例子之后看到三元组。 那么您可能需要升级您的版本。
答案 1 :(得分:0)
我总是尝试将图表命名为我将三元组加载到rdf/4
函数中然后使用该名称。这对我有用,并明确表示您要查询的图表。例如:
?- rdf_load('http://dbpedia.org/resource/Amsterdam', [graph('amsterdam')]).
% Parsed "http://dbpedia.org/resource/Amsterdam" in 0.19 sec; 5,120 triples
true.
?- rdf_statistics(triples_by_graph(Graph, Triples)).
Graph = amsterdam,
Triples = 5120.
?- rdf(S, P, O, 'amsterdam').
S = 'http://dbpedia.org/resource/Cornelis_Pronk',
P = 'http://dbpedia.org/property/placeOfBirth',
O = 'http://dbpedia.org/resource/Amsterdam' .