我正在尝试从Virtuoso和Fuseki-server运行以下查询。我使用SERVICE
子句连接到D2R的SPARQL端点。
问题是,虽然Fuseki正确应用FILTER
,但Virtuoso不会这样做并返回整个未过滤的结果集。
我使用Virtuoso版本号07.20.3214
用于Windows,Fuseki服务器版本2
和D2RQ版本0.8.1
。
查询如下
SELECT ?line ?state ?arrivalTime ?idRide
WHERE
{
{
SELECT ?ride (MAX(?avmr) AS ?avmrLast)
WHERE
{
?bs rdf:type km4c:BusStop.
?bs foaf:name "COLONNA".
SERVICE <http://localhost:2020/sparql>
{
?bsf km4c:isForecastOfBusStop ?bs.
?bsf km4c:isForecastOfAVM ?avmr.
?ride km4c:hasAVMRecord ?avmr.
}
}
GROUP BY ?ride ORDER BY DESC (?avmrLast) LIMIT 15
}
?bs rdf:type km4c:BusStop.
?bs foaf:name "COLONNA".
SERVICE <http://localhost:2020/sparql>
{
?forecast km4c:isForecastOfBusStop ?bs .
?forecast km4c:isForecastOfAVM ?avmrLast .
?forecast km4c:expectedTime ?arrivalTime.
?avmrLast km4c:concernLine ?line.
?avmrLast km4c:rideState ?state.
?ride dcterms:identifier ?idRide.
}
FILTER(?arrivalTime> "2015-01-01T09:00:00+02:00")
} ORDER BY ?arrivalTime
重点是FILTER
未应用。使用Virtuoso,我得到?arrivalTime <= 2015-01-01T09:00:00+02:00
的结果,而Fuseki工作正常。
如果我运行“普通”查询,例如没有SERVICE
,FILTER
也可以在Virtuoso中正常运行。
原因可能是什么?