限制范围内SPARQL查询的结果数

限制范围内SPARQL查询的结果数,sparql,Sparql,假设我们有以下三元组: :Influenza :hasSymptom :Fever :Influenza :hasSymptom :Headache :Influenza :hasSymptom :SoreThroat :Influenza :minQuantityOfSymptoms 1 :Influenza :maxQuantityOfSymptoms 3 我想开发一个SPARQL查询,返回minQuantityOfSymptoms和maxQuantityOfSymptoms中的许多解决方

假设我们有以下三元组:

:Influenza :hasSymptom :Fever
:Influenza :hasSymptom :Headache
:Influenza :hasSymptom :SoreThroat
:Influenza :minQuantityOfSymptoms 1
:Influenza :maxQuantityOfSymptoms 3
我想开发一个SPARQL查询,返回minQuantityOfSymptomsmaxQuantityOfSymptoms中的许多解决方案

我通过使用极限修饰符获得了类似的结果,但是我必须明确声明上限,这样就没有随机性。以下查询使用限制修饰符并始终返回两个症状:

SELECT ?symptom WHERE {
    :Influenza :hasSymptom ?symptom .
} LIMIT 2
我感谢你的帮助。
谢谢

如果我理解正确,您需要选择某种疾病的一些症状,并且您需要选择至少minQuantity和小于maxQuantity。这可以解释为什么在最小值为1,最大值为3的情况下,您选择了2(=3)− 1) 症状。您可以在SPARQL中实现这一点,尽管它不是非常漂亮。首先,让我们获取一些可加载的数据:

@前缀:
:流感症状:发烧。
:流感:症状:头痛。
:流感:症状:毒鼠强。
:流感:症状的最小数量1。
:流感:症状的最大数量3。
现在,诀窍是对每种疾病的症状进行排序,这样你就可以将一个指数与每种疾病联系起来。然后,您可以只采取指数小于max-min的症状:

前缀:
在哪里选择?疾病?症状{
?疾病:最小症状数量?min;
:MaxQuantityOf症状?最大;
:hasSymptom?症状,?症状。

filter(str(?symptom_))你能澄清你在找什么吗?在上面的例子中,你有属性
:minQuantityOfSymptoms
:maxQuantityOfSymptoms
在你的数据中分别定义为1和3。数据还显示症状的实际数量是3(因为定义了3个症状)但是,在您的示例查询中,您将限制设置为2。那么数字2从何而来,或者更具体地说:您希望查询返回的结果数量从何而来?换句话说:假设您的数据实际上总是正确的,只需返回所有无限制的症状即可满足您的约束-它将返回3症状,在规定范围内。那么为什么不能令人满意呢?