コード例 #1
0
 function testResultParser()
 {
     echo "<b>ResultParser tests</b><br/>\n";
     foreach ($_SESSION['sparql_result'] as $name) {
         $_SESSION['test'] = $name . ' test';
         $parser = new SparqlResultParser();
         $qs = file_get_contents(SPARQL_TESTFILES . 'data/' . $name . '.xml', 'r');
         $res = file_get_contents(SPARQL_TESTFILES . 'result/' . $name . '.res', 'r');
         eval($res);
         $q = $parser->parse($qs);
         $this->assertTrue(SparqlTestHelper::resultCheck($q, $result));
     }
 }
コード例 #2
0
ファイル: query.php プロジェクト: pkdevbox/construct-json-php
function sparql_query($ep, $query)
{
    $req = "{$ep}?query=" . urlencode($query);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $req);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/sparql-results+xml"));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, "CURL");
    $res = curl_exec($ch);
    $mime = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
    if (stristr($mime, "application/sparql-results+xml")) {
        $parser = new SparqlResultParser();
        $ret = $parser->parse($res);
    } else {
        exit("Didn't get SPARQL XML results, got " . $mime . "\n\n" . $query . $res);
    }
    return $ret;
}
コード例 #3
0
ファイル: SparqlClient.php プロジェクト: VUW-SIM-FIS/emiemi
 function parseResult($buffer)
 {
     include_once RDFAPI_INCLUDE_DIR . PACKAGE_SYNTAX_SPARQLRES;
     $parser = new SparqlResultParser();
     return $parser->parse($buffer);
 }
コード例 #4
0
 public function testAllTestgroupsNoReload()
 {
     echo "<b>SparqlDbTests</b><br/>\n";
     //prepare
     $parser = new SparqlParser();
     $strLastDataFile = null;
     foreach ($_SESSION['sparqlTestGroups'] as $arGroup) {
         if (isset($arGroup['deact'])) {
             continue;
         }
         //echo count($_SESSION[$arGroup['tests']]) . " tests\n";
         foreach ($_SESSION[$arGroup['tests']] as $name) {
             if (isset($name['type']) && ($name['type'] == 'syntax-negative' || $name['type'] == 'syntax-positive')) {
                 //skip syntax tests; they are run in SparqlParserTests
                 continue;
             }
             $checkfunc = $arGroup['checkfunc'];
             $fileData = null;
             $fileResult = null;
             $fileQuery = null;
             if (is_array($name)) {
                 if (isset($name['data'])) {
                     if (!file_exists(SPARQL_TESTFILES . $name['data'])) {
                         $fileData = 'data/' . $name['data'];
                     } else {
                         $fileData = $name['data'];
                     }
                 }
                 if (!file_exists(SPARQL_TESTFILES . $name['query'])) {
                     $fileQuery = 'query/' . $name['query'] . '.rq';
                 } else {
                     $fileQuery = $name['query'];
                 }
                 if (isset($name['result'])) {
                     if (!file_exists(SPARQL_TESTFILES . $name['result'])) {
                         $fileResult = 'result/' . $name['result'] . '.res';
                     } else {
                         $fileResult = $name['result'];
                     }
                 }
                 if (isset($name['title'])) {
                     $title = $name['title'];
                 } else {
                     $title = $name['query'];
                 }
             } else {
                 $fileData = 'data/' . $name . '.n3';
                 $fileQuery = 'query/' . $name . '.rq';
                 $fileResult = 'result/' . $name . '.res';
                 $title = $name;
             }
             if (in_array($title, $_SESSION['testSparqlDbTestsIgnores'])) {
                 if (isset($GLOBALS['debugTests'])) {
                     echo Console_Color::convert('%y');
                     echo '  ignoring ' . $title . "\n";
                     echo Console_Color::convert('%n');
                 }
                 continue;
             }
             //echo '  ' . $title . "\n";
             $_SESSION['test'] = $title . ' test';
             $e = null;
             if (isset($name['earl:name'])) {
                 //fix some weird issue with simpletest
                 $earlname = $name['earl:name'];
                 $this->signal('earl:name', $earlname);
             }
             if ($fileData != null && $fileData != $strLastDataFile) {
                 //re-use database if not changed
                 list($database, $dbModel) = $this->prepareDatabase();
                 //import statements into database
                 $dbModel->load(SPARQL_TESTFILES . $fileData, 'n3');
                 $strLastDataFile = $fileData;
             }
             $qs = file_get_contents(SPARQL_TESTFILES . $fileQuery);
             if ($fileResult !== null) {
                 $res = file_get_contents(SPARQL_TESTFILES . $fileResult);
                 if (substr($fileResult, -4) == '.srx') {
                     //Sparql XML result
                     $resParser = new SparqlResultParser();
                     $result = $resParser->parse($res);
                 } else {
                     if (substr($fileResult, -4) == '.rdf') {
                         //same format as .ttl, but serialized as xml
                         //rdf xml sorted
                         $resModel = new MemModel();
                         $resModel->load(SPARQL_TESTFILES . $fileResult, 'rdf');
                         $result = SparqlTestHelper::convertModelToResultArray($resModel);
                         unset($resModel);
                         $checkfunc = 'resultCheckSort';
                     } else {
                         if (substr($fileResult, -4) == '.res') {
                             //our own php code
                             unset($result);
                             eval($res);
                         } else {
                             if (substr($fileResult, -4) == '.ttl') {
                                 //N3
                                 $resModel = new MemModel();
                                 $resModel->load(SPARQL_TESTFILES . $fileResult, 'n3');
                                 $result = SparqlTestHelper::convertModelToResultArray($resModel);
                                 unset($resModel);
                             } else {
                                 throw new Exception('Unknown result format in ' . $fileResult);
                             }
                         }
                     }
                 }
             }
             try {
                 $q = $parser->parse($qs);
             } catch (Exception $e) {
                 //normal query failed to be parsed
                 $this->assertTrue(false, 'Query failed to be parsed');
                 if (!isset($GLOBALS['debugTests'])) {
                     //echo '  ' . $title . "\n";
                 } else {
                     echo Console_Color::convert('%RTest failed: ' . $title . "%n\n");
                     if (isset($e)) {
                         echo $e->getMessage() . "\n";
                         //var_dump($e);
                     }
                     echo $strQuery . "\n";
                     die;
                 }
             }
             try {
                 $t = $dbModel->sparqlQuery($qs);
                 if ($t instanceof MemModel) {
                     $bOk = $t->equals($result);
                 } else {
                     $bOk = SparqlTestHelper::$checkfunc($t, $result);
                 }
                 $this->assertTrue($bOk);
             } catch (Exception $e) {
                 $bOk = false;
                 $t = null;
                 //an exception is an error
                 if (isset($GLOBALS['debugTests'])) {
                     var_dump($e->getMessage());
                 }
                 $this->assertTrue(false);
             }
             if (!$bOk) {
                 if (!isset($GLOBALS['debugTests'])) {
                     //echo '  ' . $title . "\n";
                 } else {
                     echo Console_Color::convert('%RTest failed: ' . $title . "%n\n");
                     if ($e != null) {
                         echo get_class($e) . ': ' . $e->getMessage() . "\n";
                     }
                     echo ' Data: ' . $fileData . "\n";
                     echo 'Query string: ' . $qs . "\n";
                     echo "Expected:\n";
                     echo Console_Color::convert('%p');
                     var_dump($result);
                     echo Console_Color::convert('%n');
                     echo "Result:\n";
                     echo Console_Color::convert('%r');
                     var_dump($t);
                     echo Console_Color::convert('%n');
                     //var_dump($q);
                     die;
                 }
             }
             /**/
         }
         //            echo $arGroup['title'] . " done\n";
     }
 }