我有一个OWL文件,它存储三元组Person-hasFriend-Person关系。 OWL文件包含有关10人的信息,其唯一的信息是hasFriend
。
所有人与hasFriend
有A
个关系,只有五个人与hasFriend
有B
个关系。现在,我想通过一个查询查询与hasFriend
只有A
关系的五个人,该查询将显示与hasFriend
没有B
关系的人的姓名。如何在SPARQL中实现它?
在这里,我要求间接显示与hasFriend
A
有replaceDotHandlesWithUnderscore(input) {
// e.g. {my.nested.value} to {my_nested_value}
// e.g. {my.nested.value, select, true {Yes} false {No}} to {my_nested_value, select, true {Yes} no {false}}
return input.replace(
/\{(\s*)(\w+(\.\w+)*)/g,
(matches, space, handle) => `{${space}${handle.replace(/\./g, '_')}`
);
}
关系的人的姓名。
答案 0 :(得分:1)
Yous应提供您的OWL文件的一些详细信息。但是,如果我很清楚你想要什么,你的查询看起来就像这样:
select ?person where {
?person hasFriend A.
FILTER (NOT EXISTS {?person hasFriend B})
}