我使用的是使用链接电影数据库的EasyRdf库。在第一次尝试时,它给出了错误的最大内存利用率,然后我将内存限制设置为999G,这耗尽了我的pc。以下是我的代码和URL来使用数据库文件。
下载后本地使用的链接电影数据库链接(https://data.world/linked-data/linkedmdb)。
$query1 =file_get_contents(Yii::getAlias('@app').'\web\rdfs\linkedmovies1.txt');
$foaf = new \EasyRdf\Sparql\Client($url);
$result = $foaf->query($query1);
echo "<pre>";
print_r($result);需要一些提示才能执行此操作。
发布于 2021-03-30 17:00:33
EasyRdf不是为处理内存中的大型数据集而设计的。它的目的是在通过一些其他方法缩小数据集的范围后,帮助格式化和显示网页上的数据。
我刚试着把linkedmdb-18-05-2009-dump.nt加载到Fuseki中。它不喜欢其中的一些三元组--我不得不用我的文本编辑器用<http://data.linkedmdb.org/country/iso#alpha2>替换<http://data.linkedmdb.org/country/iso alpha2>。在那之后,它加载得很好。
我写了一个SPARQL查询,查找汤姆·汉克斯演过的所有电影,按标签排序:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX lmdb: <http://data.linkedmdb.org/movie/>
SELECT ?film ?label
WHERE {
?film a lmdb:film .
?film rdfs:label ?label .
?film lmdb:actor <http://data.linkedmdb.org/actor/28255> .
}
ORDER BY ?label然后,我编写了以下PHP脚本来测试查询加载到DataBase中的链接电影Fuseki数据集:
<?php
require_once realpath(__DIR__.'/..')."/vendor/autoload.php";
$SPARQL_QUERY = file_get_contents('lmdb_query.txt');
$SPARQL_ENDPOINT = 'http://127.0.0.1:3030/ds/sparql';
$sparql = new \EasyRdf\Sparql\Client($SPARQL_ENDPOINT);
$results = $sparql->query($SPARQL_QUERY);
print "<table>\n";
foreach ($results as $row) {
print "<tr> <td>$row->film</td> <td>$row->label</td> </tr>\n";
}
print "</table>\n";https://stackoverflow.com/questions/66810680
复制相似问题