首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Notation3的类层次结构

Notation3的类层次结构
EN

Stack Overflow用户
提问于 2015-07-22 18:57:49
回答 1查看 96关注 0票数 0

我有一个简单的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:spec a rdfs:Class.
    my:security a rdfs:Class; rdfs:subClassOf my:spec .

    my:bluetooth a my:security;
    my:preferedby my:BusinessPerson;
    my:name "bluetooth".

我正在尝试定义类spec,并将security类定义为spec的子类。

这是我在dotNetRdf库的帮助下使用的sparql查询

代码语言:javascript
复制
PREFIX my: <http://www.codeproject.com/KB/recipes/n3_notation#>
SELECT ?name
WHERE {
    [ a my:spec;
        my:preferedby my:BusinessPerson;
        my:name ?name].
}";

根据类层次结构,这个查询应该返回'bluetooth‘作为答案,因为securityspec的子类(据我所知)。但到目前为止还没有结果。有人能帮我解决我犯错的地方吗?在进阶时谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-07-22 21:22:26

我正在尝试定义类规范,并将安全类定义为规范的子类。

我认为你已经正确地完成了这一部分。

根据类层次结构,这个查询应该返回'bluetooth‘作为答案,因为安全性是规范的子类(据我所知)。

要推断被断言为安全类型的实例也是规范类型的实例,您至少需要RDFS推断。SPARQL不直接提供这一点,尽管许多端点和三元组存储可能对它有一些支持。但是,一些基本形式的推理可以用SPARQL编码,在这种情况下,您可以让您的查询工作。您只需将您的查询(并添加rdfs:前缀)调整为:

代码语言:javascript
复制
SELECT ?name WHERE {
    [ a rdfs:subClassOf*/my:spec;
        my:preferedby my:BusinessPerson;
        my:name ?name].
}

从字面上看,这意味着您希望找到一个类C的实例,其中C通过长度为零或更大的rdfs:subClassOf链接链连接到my:spec。在本例中,这意味着安全规范的所有内容。

有关在SPARQL中进行RDFS和OWL推理的更多信息,您可能会发现其中一些问题和答案很有帮助:

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

https://stackoverflow.com/questions/31561169

复制
相关文章

相似问题

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