我正在使用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
的任何好的教程吗?
任何帮助都会很棒。感谢。
答案 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处理得非常好。