У меня есть проблема в отношении КОНСТРУКЦИИ SPARQL - PullRequest
0 голосов
/ 18 марта 2019

У меня проблема с CONSTRUCT SPARQL. 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 чел.

...