我正在尝试开发一个简单的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'
似乎甚至无法将本体加载到解析器。
我从http://www.w3.org/2000/10/swap/Primer.html
研究了n3语法
我可以帮助我解决这个问题
提前谢谢
答案 0 :(得分:1)
您的数据无效,您需要定义空前缀才能在QName中引用它,例如:Person
QName(限定名称)是一种语法快捷方式,允许您缩短以prefix:name
形式编写的URI,其中prefix
必须引用通过先前@prefix
定义的已定义的名称空间前缀声明。然后,解析器只需查找前缀并将其与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的更新版本应该提供更多信息性错误消息,应该告诉您可能缺少前缀声明