我是 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
通过多个条件(使用&&
)的任何操作都失败了。
在过去的两天里,我一直坚持这一点……我错过了什么吗?
我可能应该提到我正在使用本地部署的 Fuseki 服务器和 LMDB 转储,并且我在http://localhost:3030运行查询