SPARQL-запрос в dotnetrdf не запрашивает импортированную онтологию

То, что я пытаюсь сделать, это перечислить все классы, используя следующий запрос, в файле owl, который я создал с помощью Protege 5 и в качестве импортированной онтологии имеет "foaf".

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 в Protege, я получаю все классы, определенные в пространстве имен "foaf", но когда я пытаюсь выполнить тот же запрос, используя dotnetrdf api в C#, я не получаю тот же результат.

Ниже мой код в 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;

Что я делаю неправильно?

1 ответ

Решение

Простой синтаксический анализ файла не приводит к тому, что операторы owl:import должны следовать. Механизм запросов не чувствителен к OWL.

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

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

Хотя dotNetRDF не поддерживает OWL с точки зрения аксиом, онтологий OWL и аргументации

LoadFromFile читает операторы RDF, которые кодируют онтологию. Нет обработки на уровне OWL, и это включает в себя обработку owl:imports,

Вы можете смоделировать это, найдя выражение owl:import и прочитав ссылку на g, Это не идеально, но из оригинального описания может быть то, что нужно.

Другие вопросы по тегам