簡體   English   中英

如何使用EasyRdf獲取SPARQL查詢結果

[英]How to fetch SPARQL query result using EasyRdf

我想使用EasyRdf來獲取查詢結果。 我在codeigniter中使用了以下代碼:

$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);

我得到的輸出是:

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 ( )
)

我也嘗試此處給出的Joshua解決方案,但得到了類似的輸出。 我也嘗試在Fuseki端點中查詢(我正在使用Fuseki Triplestore),並得到此結果 我完全是語義網的初學者。

我不知道這是否是答案,但是這些命名空間在我看來並不正確:

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');

rdf名稱空間的末尾應帶有#,並且您的OWL文件也可能也應帶有一個:

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#');

但這就是說,沒有理由您不能首先嘗試更簡單的查詢。 為什么不跑

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

確保您可以獲得結果以及數據是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM