Пройти онтологию используя dotnetrdf

Я создал онтологию, используя протеже. Теперь я хочу написать код для обхода онтологии с помощью 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?

1 ответ

Решение

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

g.CreateUriNode("owl:Class")

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

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

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

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

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