在Ubuntu中使用SWI-Prolog (多线程,64位,版本5.10.4),我正在尝试从rdf/3谓词中获取RDF三元组,遵循其中一个教程(实际上,所有教程都告诉我相同的内容,但下面的示例与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版本中的一个bug,或者我忘记了一些重要的或琐碎的事情。Prolog和库是从标准的Ubuntu 12.10代码库安装的。
(我没有为semweb库运行任何测试,因为我不知道如何做,因为我不是每天用Prolog编程)
发布于 2013-01-14 00:36:38
我使用的是从源代码安装的SWI-Prolog,我可以看到示例之后的三元组。那么你可能需要升级你的版本。
发布于 2017-04-20 04:46:48
我总是尝试给要加载三元组的图命名,然后在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' .https://stackoverflow.com/questions/14304841
复制相似问题