0

我正在尝试用来自 Dbpedia 的西班牙城市名称填充我的 rdf 但是......没有提取任何内容。我用 ARC2 库来做

<?php

include_once("./vendor/semsol/arc2/ARC2.php");

$config = array(
  /* db */
  'db_name' => 'my_db',
  'db_user' => 'root',
  'db_pwd' => 'root',
/* store name */
   'store_name' => 'construct_store',
 );

$store = ARC2::getStore($config);
if (!$store->isSetUp()) {     
      $store->setUp();
}

$store->query ('LOAD <http://localhost:8080/proyecto1/data/myOnto.rdf>');

$q = '
  PREFIX myOntology:  <http://www.semanticweb.org/myOntology#>
  PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
  PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
  PREFIX dbpprop: <http://dbpedia.org/property/>
  PREFIX esdbpr: <http://es.dbpedia.org/resource/> 

 CONSTRUCT  {
 ?l myOntology:hasName ?name.
 }
  WHERE (?x rdf:resource <http://dbpedia.org/ontology/PopulatedPlace">
  ?x <http://es.dbpedia.org/ontology/country>  <http://es.dbpedia.org/resource/Spain>  .
   ?name rdfs:label ?label.
 )
 }
 LIMIT 5';

 $r = '';
 if ($rows = $store->query($q, 'rows')) {
   foreach ($rows as $row) {
     $r .= '<li>' . $row['name'] . '</li>';
   }
 }

 echo $r ? '<ul>' . $r . '</ul>' : 'nothing is found';

  ?>

也许我通过 DBPedia 本体或不正确的 CONSTRUCT 结构看错了....

先感谢您

4

1 回答 1

0

rdf:resource您对房产有何看法?您应该只使用真正存在的属性,在您的情况下应该是rdf:type.

->x rdf:type <http://dbpedia.org/ontology/PopulatedPlace">

PopulatedPlace URI 中的引号字符是做什么用的?

->x rdf:type <http://dbpedia.org/ontology/PopulatedPlace>

而且还不清楚您的本地数据是否包含您要求的三元组。至少从代码中我只能看到您加载了一个文件并对该文件执行查询。顺便说一句,您正在混合来自英语和西班牙语 DBpedia 的 URI - 这是否反映在您的数据中?

于 2017-02-08T13:41:12.613 回答