2

RAP (RDF API for PHP)を使用しており、SPARQL エンジンを使用して RDF をクエリできるようにしたいと考えています。この場合、私はW3C ワイン オントロジーを使用しています。これが私のコードです:

$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か? どんな助けでも素晴らしいでしょう。ありがとう。

4

1 に答える 1

0

あなたのケースは SPARQL Property Pathsによって簡単に解決されます。

クエリは次のようになります。

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

残念ながら、あなたの実装はそれらをサポートしていません。

ファイルストレージの代わりに実際のトリプルストアを提案できますか? たとえば、Virtuoso/7はこれを非常にうまく処理します。

于 2013-07-11T11:42:57.793 に答える