是否所有导入“ owl”或“ rdf”,实现“ domain”,“ range”和其他相关谓词的本体?

时间:2019-07-04 04:22:15

标签: sparql rdf rdf-xml

很抱歉,这是一个菜鸟的简单问题,但这将帮助我解决我的概念上的困惑!我有一些猜测,但想确定一下。

我通过NeuroFMA本体和下面的查询获得了大脑一部分的位置:

PREFIX fma: <http://sig.uw.edu/fma#>

 select ?loc{
 fma:Superior_temporal_gyrus fma:location ?loc}  
  

结果是:fma:live_incus_fm_14056

我认为我也许能够获得有关此项目的更多信息。

问题1 :如果结果是原义文字,会有区别吗?

因此,我使用optional {?loc ?p ?o}并获得了一些结果。

但是,我认为由于该本体也导入了RDF和OWL,因此以下查询也应该起作用,但事实并非如此(希望这些代码正确)!

    optional {?value rdfs:range ?loc}
    optional {?loc rdfs:domain ?value}
    optional {?loc rdf:type ?value}

问题2 如果上述查询正确,那么RDFS和OWL只是一个建议吗?还是导入/跟随它们的本体必须使用它们的所有资源,或者至少在它们上面进行扩展?

谢谢!

1 个答案:

答案 0 :(得分:2)

在大多数情况下,OWL中的导入声明仅提供参考。它通常用于表示该本体重用了目标中定义的某些概念(例如,它可以定义目标数据中定义的类的一些其他子类)。

导入是否会导致将任何其他数据加载到数据集中,取决于您用于处理本体的数据库/ API /原因。默认情况下,大多数工具会自动加载导入声明的目标,因此,导入声明的存在与否不会影响查询的返回结果。

  

我认为,由于该本体也导入了RDF和OWL,因此以下查询也应适用,但事实并非如此(希望   这些代码正确)!

optional {?value rdfs:range ?loc}
optional {?loc rdfs:domain ?value}
optional {?loc rdfs:type ?value}

它是rdf:type,而不是rdfs:type。除此之外,每个单独的看起来不错。但是,从更广泛的查询来看,?loc通常不是属性,而是属性 value 。属性没有域和范围。您可以查询类似的内容,

 optional { fma:location rdfs:domain ?value}

这将询问“属性fma:location是否具有域声明,请返回该声明并将其绑定到?value变量”。

更一般而言,这些查询是否返回任何结果与本体中存在的导入声明几乎没有关系。如果您的本体包含属性的范围声明,则第一个模式将返回结果。如果包含域声明,则第二个将返回结果。 最后,如果您的本体包含某个类的实例,则第三个模式(已更正)将返回结果。就这么简单。

这里没有魔术:查询仅返回数据集中存在的内容。数据集中显示的内容取决于您如何将数据加载到数据库中,以及(可选)在数据库之上启用的推理机形式。