0

我使用 protege 创建了一个本体。现在我想编写一个代码来使用dotNetRDF遍历本体。通过遍历显示所有类,子类等。

我正在使用以下代码,但它给出了异常**

范围内的 NamespaceMapper 不知道给定前缀“owl”的命名空间 URI

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

谁能让我知道我在上面的代码中缺少什么?dotNetRDF 教程有什么好的 URL 吗?

4

1 回答 1

2

错误消息是指代码的以下部分:

g.CreateUriNode("owl:Class")

这使用前缀名称作为完整 URI 的快捷方式,这需要owl在图形中定义前缀。

如果你得到这个,那么你的 RDF 文件不包含这个,你可以这样定义:

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

我想OntologyGraph应该真的自动定义 OWL 命名空间,我将在下一个版本中添加它。

于 2012-12-27T13:55:20.023 回答