我对SPARQL的构造有疑问

时间:2019-03-18 16:05:58

标签: sparql

我对SPARQL的CONSTRUCT有疑问。 CONSTRUCT返回的实例编号与SELECT不同。 WHERE在两种情况下都是相同的。

  • 例如,此查询返回800个人。
select distinct ?p1
where {
?p1 <http://project.eu/vocab/gender> ?gender.
?p1 <http://project.eu/vocab/hasDiagnosis> ?d1.
?d1 <http://project.eu/vocab/hasDiagnosisAge> ?age.
... ...                 ...
... ...                 ...
?p1 <http://project.eu/vocab/survivalMonths> ?survivalMonths.

FILTER( (xsd:integer(?age) > "20"^^xsd:integer) && (xsd:integer(?age) < "90"^^xsd:integer)).
}
  • 但对于这个CONSTRUCT,它的WHERE句子与SELECT的返回人数不同。返回500个人。
construct { 

?p1 <http://project.eu/vocab/gender> ?gender.
?p1 <http://project.eu/vocab/hasDiagnosis> ?d1.
?d1 <http://project.eu/vocab/hasDiagnosisAge> ?age.
... ...                 ...
... ...                 ...
?p1 <http://project.eu/vocab/survivalMonths> ?survivalMonths.

}
where {
?p1 <http://project.eu/vocab/gender> ?gender.
?p1 <http://project.eu/vocab/hasDiagnosis> ?d1.
?d1 <http://project.eu/vocab/hasDiagnosisAge> ?age.
... ...                 ...
... ...                 ...
?p1 <http://project.eu/vocab/survivalMonths> ?survivalMonths.

FILTER( (xsd:integer(?age) > "20"^^xsd:integer) && (xsd:integer(?age) < "90"^^xsd:integer)).
}

但是,如果我在两个查询中都将过滤器的年龄从20岁更改为70岁,则得到的结果相同。 400人。

0 个答案:

没有答案