Python SPARQL 代码无法正常工作

Python code with SPARQL not working

我正在编写 python 代码来匹配 DBPEDIA 和 WIKIDATA 之间的参与者列表。首先,我使用 SPARQL 从 Dbpedia 检索带有一些附加信息的演员列表,例如出生日期、出生地,并使用从 Dbpedia 检索的相同演员列表,我试图检索一些附加信息,例如收到的奖项.我的 python 代码出错。

我有预感查询的 dbpedia 部分在 wikidata 中超时。跳过联合绑定并添加限制,查询将完成,但需要几秒钟。取消注释有关奖励的三元组,它会超时。

由于 SPARQL 存在问题,我暂时忽略 Python 处理。

除此之外,我发现了两个问题:

# missing prefixes
PREFIX  wdt:  <http://www.wikidata.org/prop/direct/>
PREFIX  dbo:  <http://dbpedia.org/ontology/>

PREFIX  dbp:  <http://dbpedia.org/property/>
PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX  owl:  <http://www.w3.org/2002/07/owl#>
PREFIX  xsd:  <http://www.w3.org/2001/XMLSchema#>
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT  *
WHERE {
SERVICE <http://dbpedia.org/sparql> {
  ?c  rdf:type    <http://umbel.org/umbel/rc/Actor> ;
        rdfs:label  ?Actor
    FILTER ( lang(?Actor) = "en" )
    ?c  dbo:deathDate   ?Death_date ;
        dbo:birthPlace  ?b
# date filterning not working... add cast
    FILTER ( xsd:date(?Death_date) >= "1990 - 01 - 01"^^xsd:date )
    ?b  rdfs:label  ?birth_Place
    FILTER ( lang(?birth_Place) = "en" )
    ?Starring  rdf:type       dbo:Film ;
              dbo:starring    ?c .
    ?c        dbo:deathCause  ?d .
    ?d        dbp:name        ?Cause_Of_Death .
    ?c        owl:sameAs      ?wikidata_actor
    FILTER strstarts(str(?wikidata_actor), "http://www.wikidata.org")
  }
# ?wikidata_actor wdt:P166 ?award_received.
}
LIMIT  9

每个 SPARQL 端点都有其独特的个性。所以在我看来,联合查询(使用 service 关键字并命中两个或多个端点)可能特别棘手。如果您是联盟的新手,这里有一个不相关的查询。

有一些实体以 'darwilliamstour' 的名义发推文。该实体的名称是什么?

select *
where
{
?twitterer wdt:P2002 'darwilliamstour' .
service <http://dbpedia.org/sparql>
{
?twitterer rdfs:label ?name
}
}