我正在尝试测试给定资源的现有关系(对象属性)。
让我们举一个例子:
我想知道主题?a
的谓词是否具有sparql变量?b
中的值之一。
因此,?a
可以包含一个uuid(或您想要的,但这是我的情况),而?b
包含一个资源列表(:hot
,:cold
,:good
)。
如果我的变量?a
至少有一个链接与我的变量?b
的值,则sparql不必返回它。
问题是sparql返回我的变量?a
3次。如果?b
包含10个资源,它将返回?a
10次。
是否有可能在SPARQL中“一言以蔽之”或用ASK
语句进行子查询。
SELECT * WHERE {
?donnee a capt:VALEUR .
?donnee tag:Est ?tag .
?modele tag:Modelisé_Avec ?tag .
?tag tag:A_Pour_Père/tag:Qualifié_Par ?qual .
?qualif tag:A_Pour_Père ?qual .
FILTER (?modele = tag:Modèle_qualification_température_intérieure) .
FILTER NOT EXISTS {?donnee tag:Qualifié_Par ?qualif .}
}
问题与?qualif
变量有关。
谢谢。
编辑:根据要求,您可以在此处看到一些详细信息。
?qual
=> ?qualif
,:Chaud
,:Doux
, :Frais
个资源。:Froid
变量中包含的?qualif
之一标记的值。如果数据已被标记,请不要将其返回。?qual
等等...具有所有值
正如您在这里看到的,有9227(-1)结果,但我有2307个值=> 2307x4。
您更清楚吗? 感谢您的帮助。
答案 0 :(得分:0)
感谢您的回答。
“ Select *”语句是为了简化请求。但是我尝试了您的解决方案,但它不起作用。如果我添加“ Distinct”,是的。感谢那。 今天早晨,我找到了另一种不带“ DISTINCT”的解决方案:
SELECT ?donnee WHERE{
?modele tag:Modelisé_Avec ?tag .
?donnee tag:Est ?tag .
?tag tag:A_Pour_Père/tag:Qualifié_Par ?qual .
FILTER (?tag = tag:Température_intérieure) .
FILTER NOT EXISTS { ?donnee tag:Qualifié_Par ?qualif .
?qualif tag:A_Pour_Père ?qual . }}
我在“ FILTER NOT EXISTS”中放置了“?qualif tag:A_Pour_Père?qual”,而不是“ SELECT”,它在没有“ DISTINCT”和“ SELECT *”的情况下也有效 感谢您的宝贵时间。