导入 'owl' 或 'rdf' 的所有本体都实现了 'domain'、'range' 和其他相关谓词吗?

Do all ontologies that import 'owl' or 'rdf', implement 'domain', 'range' and other related predicates?

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

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

PREFIX fma: <http://sig.uw.edu/fma#>
 
 select ?loc{
 fma:Superior_temporal_gyrus fma:location ?loc}  

The result was: fma:live_incus_fm_14056

我想我也许可以获得关于该项目的更多信息。

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

所以,我使用了 optional {?loc ?p ?o} 并得到了一些结果。

但是,我认为既然这个 ontology 也导入了 RDF 和 OWL,下面的查询应该也可以,但事实并非如此(希望这些代码是正确的)!

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

问题2如果上述查询正确,RDFS和OWL是否只是一个建议?或者导入/遵循它们的本体是否必须使用它们的所有资源或至少扩展它们?

谢谢!

OWL 中的导入声明在大多数情况下只是提供信息。它通常用于表示此 ontology re-uses 目标中定义的一些概念(例如,它可以定义 class 的一些附加子 class 定义在目标数据中)。

导入是否会导致将任何其他数据加载到您的数据集中取决于您使用什么 database/API/reasoner 来处理 ontology。默认情况下,大多数工具 不会 自动加载导入声明的目标,因此存在或不存在 import-declaration 不会影响您的查询 return.

I thought since this ontology also imported RDF and OWL, the following queries should work too, but it was not the case (hopefully these codes are correct)!

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}

这问"if the property fma:location has a domain declaration, return that declaration and bind it to the ?value variable"。

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

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