首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在查询本体时,我们必须加载本体,同时提供它的命名空间?

为什么在查询本体时,我们必须加载本体,同时提供它的命名空间?
EN

Stack Overflow用户
提问于 2017-05-31 10:37:17
回答 1查看 239关注 0票数 0

我想知道为什么我们必须加载一个本体,并且在查询它时提供它的名称空间?为什么加载本体是不够的?

为了更好地理解我的问题,下面是一个示例代码:

代码语言:javascript
复制
g = rdflib.Graph()
g.parse('ppp.owl', format='turtle')
ppp = rdflib.Namespace('http://purl.org/xxx/ont/ppp/')
g.bind('ppp', ppp)

在第2行中,我们打开了本体(ppp.owl),但在第3行中,我们也提供了它的命名空间。命名空间是否显示程序如何处理本体?

干杯,RF

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-31 13:56:00

要在语义web上指定元素,需要它的URI:惟一资源标识符,它由名称空间和本地名称组成。例如,假设Person是一个RDF类;在其他本体中,如何区分Person DBpedia类http://dbpedia.org/ontology/Person和Person?您需要名称空间http://dbpedia.org/ontology/和本地名称Person。它们都唯一地标识了类。

现在回到您的特定问题,当您查询本体时,您可能使用多个名称空间,有些名称空间可能不是您的本体之一。您需要其他名称空间来查询您自己的本体,例如rdfrdfsowl。例如,您很少能够编写没有rdf:type属性的任意查询,该属性包含在rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns>命名空间下,而不是本体命名空间下。因此,您需要指定名称空间。

那么,既然您应该知道为什么要使用命名空间,那么我们可以继续。为什么每次需要时都重复名称空间的整个字符串?它只不过是一个前缀字符串,附加到要在查询中使用的本地名称,以避免详尽地写入完整uri。请参阅<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>type之间的区别。

编辑

正如@AKSW所言,作为结论,不需要声明名称空间就可以使用本体,但是当经常使用URI具有特定命名空间的资源时,它会增加使用的方便。

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

https://stackoverflow.com/questions/44282450

复制
相关文章

相似问题

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