
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 。