Не удалось правильно обработать "PREFIX в ARC2 - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь запросить данные в онтологии, которая сохраняется в графическом текстовом графе. Я использую ARC2 в качестве конечной точки удаленного хранилища, но получил результат, что мой запрос не может обработать префикс. Я реализую его с помощью Codeigniter, и он отлично работает, чтобы найти Class внутри онтологии. Но здесь я пытаюсь найти расстояние между 2 классами. Ниже показана ошибка:

Query errorsArray ( [0] => Could not properly handle " PREFIX geo: NULL ["a"]=> array(1) { ["remote_store_endpoint"]=> string(46) "http://192.168.111.13:7200/repositories/GeoWeb" } ["caller"]=> object(stdClass)#21 (0) { } ["inc_path"]=> string(58) "C:\xampp\htdocs\SearchEngine\application\third_party\arc2/" ["ns_count"]=> int(0) ["nsp"]=> array(1) { ["http://www.w3.org/1999/02/22-rdf-syntax-ns#"]=> string(3) "rdf" } ["used_ns"]=> array(1) { [0]=> string(43) "http://www.w3.org/1999/02/22-rdf-syntax-ns#" } ["ns"]=> array(1) { ["rdf"]=> string(43) "http://www.w3.org/1999/02/22-rdf-syntax-ns#" } ["base"]=> string(55) "http://localhost/SearchEngine/testcontroller/find/tutu/" ["errors"]=> array(1) { [0]=> string(83) "Could not properly handle " PREFIX geo: array(0) { } ["adjust_utf8"]=> int(0) ["max_errors"]=> int(25) ["has_pcre_unicode"]=> int(1) ["is_remote"]=> int(1) }

Это мой код:

    $coba = new ARC2();
    $config = array('remote_store_endpoint' => 'http://192.168.111.13:7200/repositories/GeoWeb');
    $store=$coba->getRemoteStore($config);
    $r = "  PREFIX geo:<http://www.semanticweb.org/user/ontologies/2019/6/GeoWeb-Ontology#>
    PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#>
    PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX owl:<http://www.w3.org/2002/07/owl#> 
    SELECT  ?individual ?ancestor
            ( count(distinct ?mid) as ?closest)
    WHERE {
            values ?individual {geo:$tokenizeword[$x]}
            values ?ancestor {geo:$values[6]}
            ?individual rdf:type+ ?mid.
            ?mid rdf:type* ?ancestor.
            }
            group by ?individual ?ancestor
            order by ?individual ?closest
    ";
    $rowr[] = $store->query($r, 'rowsr');
    if ($errs = $store->getErrors()) {
        echo "Query errors" ;
        print_r($errs);
    }

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 17 марта 2020

Я получил ответ. Итак, существует проблема с удаленным хранилищем SPARQL на ARC2, потому что он не может обработать запрос SPARQL 1.1, поэтому нам нужно добавить в него некоторую библиотеку. К вашему сведению - следующие вилки, кажется, добавляют SPARQL 1.1. функция удаленной конечной точки.

файл: store / ARC2_SPARQL11RemoteStore. php разветвленный от https://github.com/stuartraetaylor/arc2-sparql11

...