пройти онтологию с помощью dotnetrdf

Я создал онтологию, используя protege. Теперь я хочу написать код для обхода онтологии с помощью dotNetRDF. Посредством обхода отображаются все классы, подклассы и т.д.

Я использую следующий код, но он дает исключение **

URI пространства имен для данного префикса 'owl' неизвестен в области NamespaceMapper.

OntologyGraph g = new OntologyGraph();
        FileLoader.Load(g, "humanontordf.owl");

        OntologyClass classOfClasses = g.CreateOntologyClass(g.CreateUriNode("owl:Class"));

        //This iterates over the things that are a class
        foreach (OntologyResource r in classOfClasses.Instances)
        {
            //Do what you want with the class
            Console.WriteLine(r.ToString());
        }

Этот код основан на ответе, данном здесь (http://answers.semanticweb.com/questions/19984/dotnetrdf-list-all-ontology-classes)

Может ли кто-нибудь сообщить мне, что мне не хватает в приведенном выше коде? любой хороший URL для учебника по dotNetRDF?


person mqpasta    schedule 27.12.2012    source источник


Ответы (1)


Сообщение об ошибке относится к следующей части вашего кода:

g.CreateUriNode("owl:Class")

Это использует имя с префиксом в качестве ярлыка для полного URI, который требует, чтобы префикс owl был определен в вашем графе.

Если вы получаете это, то ваш файл RDF не включает это, вы можете определить это так:

g.NamespaceMap.AddNamespace("prefix", new Uri("http://some/namespace/"));

Я предполагаю, что OntologyGraph действительно должен автоматически определять пространство имен OWL, я добавлю это в следующем выпуске.

person RobV    schedule 27.12.2012