首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用表示法3定义类层次结构

用表示法3定义类层次结构
EN

Stack Overflow用户
提问于 2015-07-20 05:58:52
回答 1查看 66关注 0票数 0

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

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

代码语言:javascript
复制
@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文件中的上述代码工作正常。但当我插入

代码语言:javascript
复制
 rdfs:Woman a rdfs:Class; rdfs:subClassOf :Person .

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

我从n3学习了http://www.w3.org/2000/10/swap/Primer.html的语法,有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-21 08:13:10

您的数据无效,需要定义空前缀才能在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定义:

代码语言:javascript
复制
@prefix : <http://example.org/namespace#> .

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

撇开

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31509677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档