我是新來的SPARQL,我嘗試做以下的事情對我的任務:SPARQL查詢與過濾器在某個日期
我需要拔出演員,但只有那些出生在一個定義日期。我的問題是,每次我嘗試按特定的整數值進行篩選時,我都會收到「出錯查詢,查看詳細原因」(順便說一句,我不知道這個問題是什麼「原因」,沒有錯誤日誌,或任何可點擊的東西來實際檢查出錯的地方)。
這裏是我的查詢:
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX movie: <http://data.linkedmdb.org/resource/movie/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX db: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?actor ?dbpediaLink ?name ?date month(?date) WHERE {
?actor a movie:actor .
?actor owl:sameAs ?dbpediaLink .
SERVICE <http://dbpedia.org/sparql> {
?dbpediaLink dbpprop:name ?name .
?dbpediaLink dbpprop:dateOfBirth ?date
}
FILTER(month(?date) = 2)
}
LIMIT 10
所以,我想在這裏做的就是二月出生的所有行動者,以及與此我得到上述錯誤。
的FILTER
以下組合返回提到的錯誤:
FILTER(month(?date) = 2)
FILTER(month(?date) > 1 && month(?date) < 3)
FILTER(month(?date) >= 2 && month(?date) <=2)
基本上所有的變化對於找回僅二月出生的人返回錯誤。我甚至嘗試將整數明確地作爲"2"^^xsd:integer
(因爲month()
函數返回一個整數)並且它仍然失敗。
我也試過(對於其他一些問題)來獲得名稱中有10個字母的演員,但我也遇到了同樣的問題。
看來,任何FILTER
我試圖使用=
或嘗試FILTER
由多個條件(使用&&
)失敗。
我被困在這最後2天...我錯過了什麼嗎?
我也許應該提到,我使用的是本地部署的定式服務器LMDB轉儲,而我在http://localhost:3030
非常感謝你,增加'無聲'解決了我的問題,但我不知道爲什麼。如果對dbpedia的請求失敗,我如何獲得'FILTER'中使用的日期?我得到的結果正是我所需要的,10月2日出生的演員。 – mercin 2015-02-08 11:20:38
@mercin - 您添加的「SILENT」可能似乎是修復,但恰好與其他一些更改(可能是DBpedia重新啓動,或網絡故障已修復等)一致。 – TallTed 2017-08-28 16:13:49