[英]How to get gross from Dbpedia with SPARQL
我試圖通過sparql查詢從dbpedia中獲得毛額,但我做不到。 我的代碼是
library(SPARQL)
endpoint <- 'http://live.dbpedia.org/sparql'
options <- NULL
prefix <- c("db","http://dbpedia.org/resource/")
sparql_prefix <- "PREFIX dbp: <http://dbpedia.org/property/>
PREFIX dc: <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
"
q <- paste(sparql_prefix,
'SELECT ?actor ?movie ?gross
WHERE {
?m dc:subject <http://dbpedia.org/resource/Category:American_films> .
?m rdfs:label ?movie .
FILTER(LANG(?movie) = "en")
?m dbo:gross ?a .
?a rdfs:label ?gross .
FILTER(DATATYPE(?gross) = xsd:double)
?m dbp:starring ?a .
?a rdfs:label ?actor .
FILTER(LANG(?actor) = "en")
}')
results <- SPARQL(endpoint,q,ns=prefix,extra=options)$results
但返回了一個空白的data.frame
您有任何想法如何獲得毛額嗎?
dbo:gross
值不是節點,在其上使用rdfs:label
沒有意義。 相反,它直接是一個值。 dbo:gross
的類型不是xsd:double
,通常是<http://dbpedia.org/datatype/usDollar>
,但是某些電影使用其他貨幣。 因此,固定查詢可能類似於:
SELECT ?actor ?movie ?gross
WHERE {
?m dc:subject <http://dbpedia.org/resource/Category:American_films> .
?m rdfs:label ?movie .
FILTER(LANG(?movie) = "en")
?m dbo:gross ?gross .
?m dbp:starring ?a .
?a rdfs:label ?actor .
FILTER(LANG(?actor) = "en")
}
請記住,此查詢將僅列出同時具有dbo:gross
和至少一個dbp:starring
。 如果這不是您想要的,請考慮使用OPTIONAL
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.