2017-09-23 6 views
1

私がしようとしているのは、Protege 5を使用して作成したowlファイルで、インポートされたオントロジーとして「foaf」を持つ次のクエリを使用するクラスです。dotnetrdfのSPARQLクエリでインポートされたオントロジーが照会されない

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#> 
SELECT DISTINCT ?subject ?label ?comment 
    WHERE 
    { 
     ?subject a owl:Class 
     OPTIONAL { ?subject a rdfs:Class } 
     OPTIONAL { ?subject rdfs:label ?label } 
     OPTIONAL { ?subject rdfs:comment ?comment} 
    } 

問題は、私は門徒のSPARQL]タブでこのクエリを実行すると、私は「FOAF」名前空間で定義されているすべてのクラスを取得しますが、私はC#でdotnetrdf APIを使用して、同じクエリを実行しようとすると、私は得ることはありません、です同じ結果。続き

は私が間違って何をやっているC#での私のコード

var g = new Graph(); 
g.LoadFromFile(owlFile, new TurtleParser()); 
ISparqlDataset ds = new InMemoryDataset(g); 
LeviathanQueryProcessor processor = new LeviathanQueryProcessor(ds); 
var queryParser = new SparqlQueryParser(); 
var parmeterizedString = new SparqlParameterizedString(query); 
parmeterizedString.SetLiteral("value", searchQuery); 
return processor.ProcessQuery(queryParser.ParseFromString(parmeterizedString.ToString())) as SparqlResultSet; 

のですか?

+0

'parmeterizedString.SetLiteral(" value "、searchQuery);' - クエリには値がありません。 – AndyS

答えて

4

ファイルを解析しても、owl:imports文に従うことはありません。クエリエンジンはOWLに敏感ではありません。

g.LoadFromFile(owlFile, new TurtleParser());

https://github.com/dotnetrdf/dotnetrdf/wiki/HowTo-Load-OWL

dotNetRDFが公理の点でOWLをサポートしていないが、OWL オントロジーと推論

LoadFromFileは、オントロジーをコードRDFステートメントを読み出します。 OWLレベルの処理はなく、処理にはowl:importsが含まれています。

これをシミュレートするには、owl:importsステートメントを検索し、リンクをgに読み込みます。これは完璧ではありませんが、元の説明から、欲しいものがあるかもしれません。

関連する問題