在符号 3 中定义 class 层次结构

Define class hierarchy in Notation 3

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

到目前为止我在 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 库读取和查询 ontology 文件。 n3 文件中的上述代码工作正常。但是当我插入

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

在 ontology 文件的末尾出现错误 Unable to resolve the QName ':Person' 似乎甚至无法将 ontology 加载到解析器。

我学习了 http://www.w3.org/2000/10/swap/Primer.html 的 n3 语法 有人可以帮我解决这个我犯了错误的地方吗 提前致谢

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

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

如果未定义前缀,则 RDF 解析器会抛出错误。

所以您需要修复数据,根据您的意图,有几种方法可以做到这一点。

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

只需将 :Person 替换为 my:Person

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

您打算定义一个空的命名空间

只需添加以下@prefix定义:

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

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

一边

您使用的是什么版本的 dotNetRDF?还有你引用的错误信息是完整的错误信息吗?

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