簡體   English   中英

如何使用SPARQL從Dbpedia獲得總收入

[英]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

您有任何想法如何獲得毛額嗎?

  1. dbo:gross值不是節點,在其上使用rdfs:label沒有意義。 相反,它直接是一個值。
  2. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM