0

我正在尝试开发一个简单的 Notation3 本体文件。

到目前为止,我在 notation3 文件中的代码是

@prefix my: <http://www.codeproject.com/KB/recipes/n3_notation#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .



my:batterycs a my:spec;
    my:preferedby my:BusinessPerson, my:LoveBird, my:MusicLover, my:Travelar;

    my:name "batteryCS".

    rdfs:Person a rdfs:Class.

我正在使用 dotNetRdf 库来读取和查询本体文件。n3 文件中的上述代码工作正常。但是当我插入

 rdfs:Woman a rdfs:Class; rdfs:subClassOf :Person .

在本体文件的末尾,它发生错误 Unable to resolve the QName ':Person'似乎甚至无法将本体加载到解析器。

我研究了 n3 语法,http://www.w3.org/2000/10/swap/Primer.html 有人可以帮我解决这个问题,我犯了这个错误,在此先感谢

4

1 回答 1

1

您的数据无效,您需要定义空前缀以便能够在 QName 中引用它,例如:Person

QName(合格名称)是一种语法快捷方式,它允许您缩短以必须引用通过先前语句定义的已定义名称空间前缀的形式编写prefix:name的URI。然后解析器简单地查找前缀并将其与部分连接,因此例如在您的示例数据中展开。prefix@prefixnamerdfs:Classhttp://www.w3.org/2000/01/rdf-schema#Person

如果没有定义前缀,那么 RDF 解析器会抛出错误。

所以你需要修复你的数据,有几种方法可以做到这一点,具体取决于你的意图。

您打算放入:Person自己的my:名称空间

只需替换:Personmy:Person

请注意,您也提到过,rdfs:Person因此您的数据看起来有些不一致

你的意思是定义一个空的命名空间

只需添加以下@prefix定义:

@prefix : <http://example.org/namespace#> .

其中 URI 是所需的命名空间 URI

在旁边

您使用的是什么版本的 dotNetRDF?您引用的错误消息是完整的错误消息吗?

最新版本的 dotNetRDF 应该提供更多信息性错误消息,这些错误消息应该告诉您您可能缺少前缀声明

于 2015-07-21T08:13:10.833 回答