web应用

现在你对我们的 API 已经有了基本的了解,但你可能仍然会有点迷惑。这里我们提供一个简单的样例来告诉你应该做什么。

比如说,你需要在一个 web 项目中使用 gStore PHP 是一种广泛使用的脚本语言,适用于 web 开发。所以,使用我们的 PHP API 可以满足你的要求。这是我们完成的一个网页:demo

首先,准备好你的 web 服务器,使其能够运行 PHP 文件。对于这一步我们不做细节介绍,根据你的 web 服务器(例如 Apache ,或者 Nginx 等等),你可以轻易地搜索到相关操作。

接下来,进入你的 web 文件根目录(通常在 /var/www/html 或者 apache/htdocs ,可以在配置文件中查看),创建一个文件夹并命名为“ Gstore”。然后把 GstoreConnector.php 文件拷贝到这个文件夹下。创建一个 PHP 文件,命名为“ PHPAPI.php”。如下编辑:


<?php

//require "../src/GstoreConnector.php";
include( 'gStoreConnector.php');
$username = "root";
$password = "123456";
$gc = new GstoreConnector("127.0.0.1", 9001);
$dbname = $_POST["databasename"];
$query = $_POST["query"];
$format = $_POST["format"];
$result = $gc->query($username, $password, $dbname, $query);
$js = json_decode($result);


switch ($format) {
    case 1:

    $vars = $js->head->vars;
    $rows = $js->results->bindings;
    $html = '<html><table class="sparql" border="1"><tr>';
    for ($i = 0; $i < count($vars); $i++) {
        $html.= '<th>' . $vars[$i] . '</th>';
    }
    $html.= '</tr>';
    for ($i = 0; $i < count($rows); $i++) {
        $html.= '<tr>';
        $row = $rows[$i];
            for ($j = 0; $j < count($vars); $j++)
                $html.= '<td>' . htmlspecialchars($row->
        $vars[$j]->value) . '</td>';
        $html.= '</tr>';
    }
    $html.= '</table></html>';
    echo $html;
    exit;


    case 2:
    $filename = 'sparql.txt';
    header("Content-Type: application/octet-stream");
    header('Content-Disposition: attachment;
    filename="' . $filename . '"');
    $rows = $js->results->bindings;
    for ($i = 0; $i < count($rows); $i++)
        echo $rows[$i] . "\n";
    exit;


    case 3:
    $filename = 'sparql.csv';
    header("Content-Type: application/octet-stream");
    header('Content-Disposition: attachment;
    filename="' . $filename . '"');
    $vars = $js->head->vars;
    echo implode(",",$vars);
    echo "\n";
    $rows = $js->results->bindings;
    for($i = 0; $i < count($rows); $i++) {
        $row = $rows[$i];
        for($j = 0; $j < count($vars); $j++) {
            echo ($row->$vars[$j]->value);
            echo ",";
        }
        echo "\n";
    }
    exit;
}


?>


这一 PHP 文件从一个网页中获取三个参数:数据库名、 sparql 和输出格式。然后它用我们的 PHP API 连接到 gStore ,执行查询。最后,代码中的“ switch”部分按照要求的格式给出结果。

之后,我们需要写一个可以搜集上述参数(数据库名、 sparql 和输出格式)的网页。我们创建一个 html 文件,使用表单来完成这一步骤。如下所示:


<form id="form_1145884" class="appnitro" method="post" action="PHPAPI.php">
<
div class="form_description">
    <
h2>Gstore SPARQL Query Editor</h2>
</div>
<
ul>
   
    <li id="li_1" >
   
        <label class="description" for="element_1">Database Name</label>
   
        <div>
   
            <input id="element_1" name="databasename" class="element text medium" type="text" maxlength="255" value="dbpedia_2014_reduce"></input>
            </div>
   
    </li>

        <li id="li_3">
            <label class="description" for="element_3">Query Text </label>
            <div>
                <textarea id="element_3" name="sparql" class="element textarea large">
                    SELECT DISTINCT ?uri
                    WHERE {
                        ?uri <type> <Astronaut> .
                        { ?uri <nationality> <Russia> . }
                        UNION
                        { ?uri <nationality> <Soviet_Union> . }
                    }
                </textarea>
            </div>
        </li>

        <li id="li_5" >
            <label class="description" for="element_5">Results Format</label>
            <div>
                <select class="element select medium" id="element_5" name="format">
                    <option value="1" selected="ture">HTML</option>
                    <option value="2" >Text</option>
                    <option value="3" >CSV</option>
                </select>
            </div>
        </li>

        <li class="buttons">
            <input type="hidden" name="form_id" value="1145884" />
            <input id="saveForm" class="button_text" type="submit" name="submit" value="Run Query" />
        </li>
    </ul>
</form>


你可以在代码中看到,我们用 <input> 元素得到数据库名, <texarea> 得到 sparql <select> 得到输出格式。 <form> 标签有一个属性“ action”,指明了要执行哪个文件(在本例中是“ PHPAPI.php”)。因此,当你在网页中点击“ submit”时,就会执行 PHPAPI.php 并且传递表单中收集到的参数。

最后,不要忘了在你的服务器上启动 ghttp