gpt4 book ai didi

SPARQL "ASK"查询以检查两个类之间是否存在对象属性(不是黑白个体)

转载 作者:行者123 更新时间:2023-12-02 17:38:59 26 4
gpt4 key购买 nike

我想查询 OWL2 文件中的两个类之间是否存在某些 ObjectPropery (OP)。我正在使用 JENA API 构建 SPARQL 查询。

到目前为止我尝试过的:

首先,我使用 SELECT 查询来检查给定 OP 的类:

  " { SELECT ?domain ?range WHERE {\n" +
":isManagedBy rdfs:domain ?domain; \n" +
" rdfs:range ?range. \n } }" +
"}";

然后我用 ASK 查询包裹了它

" ASK WHERE { \n" +
" { SELECT ?domain ?range WHERE {\n" +
":isManagedBy rdfs:domain ?domain; \n" +
" rdfs:range ?range. \n } }" +
"}";

它似乎给了我答案,但我认为,我在这个查询中混淆了很多东西:

我的目标:是查询 OWL 文件中是否存在某些事实( bool 答案)

例如:OWL 片段

<owl:ObjectProperty rdf:ID="isManagedBy">
<rdf:type rdf:resource="owl#FunctionalProperty" />
<rdfs:domain rdf:resource="#FunctionManagement" />
<rdfs:range rdf:resource="#SymposiumPlanner2013"/>
</owl:ObjectProperty>

我想检查的是:isManagedBy(FunctionManagement, SymposiumPlanner2013) 是否存在。

最佳答案

我认为我链接的可能重复项 ( How to query Classes with Object Property in Sparql ) 可能足以回答您的问题,但没有必要将 select 查询包装在 ask 在这里查询。您在询问您的数据是否包含三元组:

:isManagedBy rdfs:domain :FunctionManagement .
:isManagedBy rdfs:range :SymposiumPlanner2013 .

您只需要一个询问该数据是否存在的查询:

prefix :     <…>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
ask {
:isManagedBy rdfs:domain :FunctionManagement .
:isManagedBy rdfs:range :SymposiumPlanner2013 .
}

你甚至可以使用一些缩写来使它更简洁:

prefix :     <…>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
ask {
:isManagedBy rdfs:domain :FunctionManagement ;
rdfs:range :SymposiumPlanner2013 .
}

关于SPARQL "ASK"查询以检查两个类之间是否存在对象属性(不是黑白个体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23086219/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com