使用 CONSTRUCT 使用 ARC2 从 dbpedia 获取城市名称
Get city names from dbpedia with ARC2 using CONSTRUCT
我正在尝试用 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 ontology 或 CONSTRUCT 结构看错了....
提前致谢
您认为 属性 的 rdf:resource
是多少?您应该只使用真正存在的属性,在您的情况下应该是 rdf:type
.
-> x rdf:type <http://dbpedia.org/ontology/PopulatedPlace">
PopulatedPlace URI 中的引号字符有什么用?
-> x rdf:type <http://dbpedia.org/ontology/PopulatedPlace>
并且不清楚您的本地数据是否包含您要求的三元组。至少从代码中我只能看到你加载了一个文件并对该文件执行了查询。顺便说一下,您混淆了来自英语和西班牙语 DBpedia 的 URI - 这反映在您的数据中吗?
我正在尝试用 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 ontology 或 CONSTRUCT 结构看错了....
提前致谢
您认为 属性 的 rdf:resource
是多少?您应该只使用真正存在的属性,在您的情况下应该是 rdf:type
.
-> x rdf:type <http://dbpedia.org/ontology/PopulatedPlace">
PopulatedPlace URI 中的引号字符有什么用?
-> x rdf:type <http://dbpedia.org/ontology/PopulatedPlace>
并且不清楚您的本地数据是否包含您要求的三元组。至少从代码中我只能看到你加载了一个文件并对该文件执行了查询。顺便说一下,您混淆了来自英语和西班牙语 DBpedia 的 URI - 这反映在您的数据中吗?