0

我正在使用使用链接电影数据库的 EasyRdf 库。在第一次尝试时,它给出了最大内存利用率错误,然后我将内存限制设置为 999G,这耗尽了我的电脑。以下是我使用数据库文件的代码和 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);

需要一些提示来执行此操作。

4

1 回答 1

1

EasyRdf 并非旨在处理内存中的大型数据集。在通过其他方式缩小数据集后,它旨在帮助格式化和显示网页上的数据。

我刚刚尝试加载linkedmdb-18-05-2009-dump.ntFuseki。它不喜欢其中的一些三元组——我不得不<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 脚本来测试查询加载到 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";
于 2021-03-30T09:00:33.213 回答