2013-01-13 5 views
3

Avec SWI-Prolog (Multi-thread, 64 bits, Version 5.10.4) sous Ubuntu, j'essaie d'obtenir des triplets rdf à partir du prédicat rdf/3, suite à l'un des tutoriels (en fait, tous les me dire la même chose, mais l'exemple ci-dessous est le long de http://cliopatria.swi-prolog.org/tutorial/Parsia/). Cependant, alors que d'autres prédicats semblent bien fonctionner, le rdf/3 donne juste rien:Le prédicat rdf de SWI-Prolog semweb_db ne donne rien

?- [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'. 

Une ou deux fois j'ai obtenu des résultats pour les S, si je mets des constantes P et O (mais j'ai oublié comment faire il.). Je ne suis pas sûr, si c'est un bug dans ma version de swipl ou j'ai oublié quelque chose d'important ou de trivial. Prolog et les bibliothèques ont été installés à partir du repo Ubuntu 12.10 standard.

(je ne l'ai pas exécuter des tests pour la bibliothèque semweb, parce que je ne sais pas comment le faire, comme je ne suis pas le programme en Prolog tous les jours)

+0

probablement vous devez mettre à jour votre version, je vois les triplets après votre exemple ... – CapelliC

+0

s'il vous plaît, écrire une réponse pour que je puisse reconnaître votre entrée properyl: Je l'ai mis à jour (en utilisant gdebi et deb pour depuis http://ftp.debian.org/debian/pool/main/s/swi-prolog/ pour SWI-Prolog (Multi-thread, 64 bits, Version 6.2.5)) et maintenant je vois aussi ces triplets . Merci! –

Répondre

1

J'utilise SWI-Prolog installé à partir des sources , et je peux voir les triples après votre exemple. Alors probablement vous devez mettre à jour votre version.

0

J'essaie toujours de nommer le graphique dans lequel je charge mes triplets, puis d'utiliser ce nom dans la fonction rdf/4. Cela fonctionne pour moi et rend explicite le graphique que vous interrogez. Ainsi, par exemple:

?- 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' .