0

对不起,如果这是一个菜鸟和简单的问题,但它会帮助我解决我的概念混淆!我有一些猜测,但想确定一下。

我通过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 是否只是一个建议?或者导入/遵循它们的本体是否必须使用它们的所有资源或至少扩展它们?

谢谢!

4

1 回答 1

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通常不是属性,而是属性。属性没有域和范围。您可以查询这样的内容,可能是:

 optional { fma:location rdfs:domain ?value}

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

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

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

于 2019-07-04T05:15:56.167 回答