我有一些PHP代码,用于根据SPARQL查询的结果创建动态网页。它现在不能正常工作,我认为这是因为我的本体还没有在线发布。我该如何处理发布部分?
<html>
<body>
<?php
include_once('semsol/ARC2.php'); /* ARC2 static class inclusion */
$dbpconfig = array
(
"remote_store_endpoint" => "http://dbpedia.org/sparql",
);
$store = ARC2::getRemoteStore($dbpconfig);
if ($errs = $store->getErrors())
{
echo "<h1>getRemoteSotre error<h1>" ;
}
$query = '
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX uni: <http://www.semanticweb.org/admin/ontologies/2017/4/untitled-ontology-19#>
SELECT ?property ?subject ?prop ?object
WHERE
{
uni:Product ?property ?subject .
OPTIONAL {?subject ?prop ?object }
}
';
$rows = $store->query($query, 'rows'); /* execute the query */
if ($errs = $store->getErrors())
{
echo "Query errors" ;
print_r($errs);
}
/* display the results in an HTML table */
echo "<table border='1'>" ;
foreach( $rows as $row )
{
/* loop for each returned row */
print "<tr><td>" .$row['l'] . "</td><td>" . $row['c']. "</td></tr>";
}
echo "</table>"
?>
</body>
</html>
答案 0 :(得分:2)
你还对此感兴趣吗?以下适用于我。我试图说明如何测试多部分系统的单个组件,而不仅仅是构建所有内容,测试最终产品,然后说&#34;它不会。工作&#34;
背景:我使用在 AWS 中运行的 Ubuntu 16 服务器。看来您可能有一些使用 Fuseki 作为后端的经验。通过少量修改,这些指令应适用于Ubuntu Linux以外的操作系统,在不同的物理或虚拟环境中运行,以及访问Fuseki以外的sparql端点。您可以在相同的服务器或两个不同的服务器上运行PHP脚本和Fuseki进程。
您的先决条件责任:正在运行的网络服务器&amp; php解释器。默认的Ubuntu apache2和php7软件包适用于我,只需极少或零额外配置。 You could follow instructions like these,跳过MySQL步骤。同一篇文章提供了配置防火墙的一些技巧。您负责确定适当的全球可访问性级别。
run/shiro.ini
文件以启用相应的远程访问政策./fuseki-server --mem /default
不要关闭此终端会话!您需要打开另一个其他任务的会话。如果您希望流程和数据保持不变,则需要使用另一种启动Fuseki的方法。http://server.domain:3030
pizza.owl
,因此我点击了select files...
按钮,导航到我的pizza.owl
文件,点击打开,然后点击立即上传。如果您使用披萨本体,您应该会看到大约插入了1980个三元组。PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
SELECT *
WHERE {
?recursiveTopping rdfs:subClassOf+ pizza:PizzaTopping .
?recursiveTopping rdfs:label ?toppingLabel .
?recursiveTopping rdfs:subClassOf ?immediateParent .
filter(!isBlank(?immediateParent))
filter( ?immediateParent != pizza:PizzaTopping )
}
order by ?immediateParent ?recursiveTopping
/var/www/html
。您可能需要以root身份执行此操作,如下所示:sudo mkdir /var/www/html/ARC2_pizza
cat > index.php
然后粘贴剪贴板中的文本。所需的操作取决于您使用的界面。在Ubuntu终端中,使用Shift-Control-v。在putty中,单击鼠标右键。或者您可以使用像nano或gedit这样的文本编辑器来创建index.php
...请记住,/ var / www / html中的编辑文件通常需要root权限,除非您更改了目录的所有权或访问权限,您的网络服务器可能不会欣赏。您需要确保已安装ARC2库,脚本知道在哪里找到它,并且remote_store_endpoint
参数设置为正确的地址。
安装ARC2的方法可能有多种。我使用了composer,而后者可以通过多种方式安装,包括apt-get
sudo apt-get install composer
或卷曲
sudo apt-get install curl
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
接着是
cd /var/www/html/ARC2_pizza
composer require "semsol/arc2": "dev-master"
关于remote_store_endpoint
:如果您在与Fuseki服务器相同的服务器上运行php脚本(就像我一样),您可以使用localhost
。否则,请使用完全限定的公共IP地址或Fuseki服务器的名称。
根据您的具体情况定制脚本后,从命令行进行测试(而不是使用网络浏览器访问它。)
php /var/www/html/ARC2_pizza/index.php
结果看起来不太漂亮,但如果你仔细观察,你应该看到几个披萨配料的名称,用HTML表格标签分隔,如...<td><tr>...
如果可行,您最终可以从Web浏览器进行测试。如果您使用了类似我的设置,请将浏览器指向http://server.domain/ARC2_pizza
这样的地址如果您在网络浏览器中没有看到披萨配料表,那么您的网络服务器或防火墙设置有问题,而不是Fuseki,查询,PHP和ARC2安装,或者剧本。
ARC2_pizza/index.php
。这是基于您的问题所基于的相同教程。不要忘记配置ARC2位置和端点地址
<html>
<body>
<?php
// customize your ARC2 location
include_once("/var/www/html/phprdftest/arc2-master/ARC2.php");
$dbpconfig = array
(
// customize your endpoint address
"remote_store_endpoint" => "http://localhost:3030/default/query",
);
$store = ARC2::getRemoteStore($dbpconfig);
if ($errs = $store->getErrors())
{
echo "<h1>getRemoteSotre error<h1>" ;
}
$query = '
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX pizza: <http://www.co-ode.org/ontologies/pizza/pizza.owl#>
SELECT *
WHERE {
?recursiveTopping rdfs:subClassOf+ pizza:PizzaTopping .
?recursiveTopping rdfs:label ?toppingLabel .
?recursiveTopping rdfs:subClassOf ?immediateParent .
filter(!isBlank(?immediateParent))
filter( ?immediateParent != pizza:PizzaTopping )
}
order by ?immediateParent ?recursiveTopping
';
$rows = $store->query($query, 'rows'); /* execute the query */
if ($errs = $store->getErrors())
{
echo "Query errors" ;
print_r($errs);
}
/* display the results in an HTML table */
echo "<table border='1'>" ;
foreach( $rows as $row )
{
/* loop for each returned row */
print "<tr><td>" .$row['recursiveTopping'] . "</td><td>" .
$row['toppingLabel']. "</td><td>" .
$row['immediateParent']. "</td></tr>";
}
echo "</table>"
?>
</body>
</html>
答案 1 :(得分:0)
如果您正在使用Windows,那么您需要一个mysql备份,所以首先安装wamp服务器然后phpmyAdmin数据库然后在store查询命令add中设置配置 商店商店&gt;查询(&#39; http://localhost/filename.owl&#39;)。然后使用wamp服务器运行php文件。您将看到数据库中的rdf / xml值在执行之前忘记将ARC.php文件和文件添加到www文件夹中
答案 2 :(得分:-1)
<android.support.constraint.Barrier
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/barrier1"
app:barrierDirection="bottom"
app:constraint_referenced_ids="included_layout, multiline_textview" />
<TextView
android:id="@+id/bottom_textview"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/barrier1"
android:layout_width="0dp"
android:layout_height="wrap_content" />