2016-09-08 1 views
0

En utilisant EasyRdf, je veux récupérer le résultat de la requête. Je ci-dessous le code dans CodeIgniter:Comment récupérer le résultat de la requête SPARQL en utilisant EasyRdf

$this->load->library('rdf'); 
EasyRdf_Namespace::set('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns'); 
EasyRdf_Namespace::set('srt', 'http://persuratan-semweb.dev/ontologies/surat.owl'); 
$sparql = new EasyRdf_Sparql_Client('http://localhost:3030/surat_single/sparql'); 

$query = "SELECT * WHERE { " 
      . "?surat rdf:type srt:Surat . " 
      . "?surat srt:sifat_surat ?sifat_surat . " 
      . "?surat srt:nomor_surat ?nomor_surat . }"; 
$result = $sparql->query($query); 

echo "jumlah data: " . $result->numRows() . "<br>"; 
echo "<br>"; 

foreach ($result as $row) { 
    echo $row->sifat_surat . " " .$row->sifat_surat . " " . $row->nomor_surat ."<br>"; 
} 

print_r($result); 

La sortie je suis arrivé sont:

jumlah data: 0 

EasyRdf_Sparql_Result Object ( 
    [type:EasyRdf_Sparql_Result:private] => bindings 
    [boolean:EasyRdf_Sparql_Result:private] => 
    [ordered:EasyRdf_Sparql_Result:private] => 
    [distinct:EasyRdf_Sparql_Result:private] => 
    [fields:EasyRdf_Sparql_Result:private] => Array ( 
     [0] => surat 
     [1] => sifat_surat 
     [2] => nomor_surat 
    ) 
    [storage:ArrayIterator:private] => Array () 
) 

J'essaie aussi la solution de Joshua donnée here, mais on m'a donné une sortie similaire. J'essaie aussi ma requête dans Fuseki endpoint (j'utilise Fuseki triplestore) et j'ai obtenu ce result. Je suis complètement débutant dans le web sémantique.

Répondre

1

Je ne sais pas si c'est la réponse ou non, mais ces espaces de noms ne regardez pas le droit de me:

EasyRdf_Namespace::set('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns'); 
EasyRdf_Namespace::set('srt', 'http://persuratan-semweb.dev/ontologies/surat.owl'); 

Le rdf espace de noms devrait avoir un # à la fin, et vous devriez probablement un pour votre fichier OWL aussi:

EasyRdf_Namespace::set('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'); 
EasyRdf_Namespace::set('srt', 'http://persuratan-semweb.dev/ontologies/surat.owl#'); 

Mais cela dit, il n'y a aucune raison que vous ne pouvez pas essayer une plus simple la première requête. Pourquoi ne pas simplement exécuter

SELECT ?s ?p ?o { ?s ?p ?o } 

pour être sûr que vous pouvez obtenir des résultats, et quelles sont les données.

+0

Merci @Joshua, le # résoudre mon problème. :) –