PHP的RDF api没有返回带继承的类UPDATE:尝试使用pOWL

时间:2013-06-10 10:30:45

标签: php rdf sparql

我正在使用RAP (RDF API for PHP)并希望能够使用SPARQL引擎来查询我的RDF。在这种情况下,我使用的是W3C wine ontology。这是我的代码:

$base="wine.rdf";

$model = ModelFactory::getDefaultModel();
$model->load(RDFAPI_INCLUDE_DIR . 'wine.rdf');
$querystring = "SELECT ?wine  WHERE { ?wine rdfs:subClassOf <http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#Wine> } ";
$result = $model->sparqlQuery($querystring, 'html');

这应该返回类Wine的所有子类并将它们打印到HTML表中(以便于阅读)。它返回了一些结果,但它没有通过继承返回所有具有此属性的类,并且我没有得到任何错误。如何获取Wine

的子类的所有

更新:

使用RAP库没有运气,已经开始使用pOWL了。另一个PHP库,更多支持OWL操作。但是,它没有很好的记录并且有一些麻烦。试图列出这样的子类:

$base="wine.owl";
$Model = ModelFactory::getDefaultModel();
$Model->load(RDFAPI_INCLUDE_DIR . 'wine.owl');
$subClass = $Model->writeAsHtmlTable();
$subClass =$Model->listSubClasses;

但没有好处。有人知道pOWL的任何好的教程吗? 任何帮助都会很棒。感谢。

1 个答案:

答案 0 :(得分:0)

您的案例很容易通过SPARQL Property Paths解决。

查询如下所示:

SELECT ?wine  WHERE {
    ?wine (rdfs:subClassOf)+ <http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#Wine>
}

不幸的是,您的实施不支持这些。

我可以建议一个真正的三重存储而不是文件存储吗?例如,Virtuoso/7处理得非常好。