使用Sparql从Wikidata检索电影的美国发布日期

时间:2016-11-29 12:08:15

标签: sparql rdf wikidata

我正在尝试使用wikidata.org sparkql端点(https://query.wikidata.org/)检索电影的标题和发布日期(发布日期)。标题以不同语言列出,在下面的查询中进行过滤。然而,一些电影也有几个发布日期(例如,对于不同的国家),例如, https://www.wikidata.org/wiki/Q217020。我不确定RDF三重结构是如何实际用于将国家/地区分配给另一个三元组的值的,但具体来说,我怎样才能检索美国电影的发布日期?

NSArray *arr = [NSArray arrayWithObjects:@"Temp1",@"Temp2",@"Temp3",@"Temp4",@"Temp5",@"Temp6",@"Temp7",@"Temp8",@"Temp9",@"Temp10",@"Temp11",@"Temp12",@"Temp13",@"Temp14",@"Temp15",@"Temp16",@"Temp17",@"Temp18", nil];


// Here create an array of your ranges through which you want your data

NSArray *arrIndex = [NSArray arrayWithObjects:[NSValue valueWithRange:NSMakeRange(3,4)],[NSValue valueWithRange:NSMakeRange(0,4)],[NSValue valueWithRange:NSMakeRange(11,7)],[NSValue valueWithRange:NSMakeRange(7,4)], nil];


NSMutableArray *arrTemp = [NSMutableArray new];
for  (int i=0;i<arrIndex.count;i++) {
        [arrTemp addObject:[arr subarrayWithRange:[arrIndex[i] rangeValue]]];
    }

for (NSArray *arr in arrTemp) {
    NSLog(@"Arra - %@",arr);
}

解决方案

M.Sarmini提供的解决方案有效。显然,诸如发布数据之类的事实存储为 n-ary relations ,它们创建了一个链接资源的唯一符号标记。 P577链接到的值只是日期,当变成字符串时会给出发布日期,而实际上它是一个可以链接到其他限定符的标记。

1 个答案:

答案 0 :(得分:1)

只需添加一个新变量来保存发布地点并过滤结果,只需列出这样的美国电影:

PREFIX q: <http://www.wikidata.org/prop/qualifier/>
PREFIX s: <http://www.wikidata.org/prop/statement/>

SELECT distinct ?item  ?title ?publicationdate
WHERE { 
  ?item wdt:P31 wd:Q11424;
        rdfs:label ?title;             
        p:P577 ?placeofpublication.
  ?placeofpublication q:P291 wd:Q30.   
  ?placeofpublication s:P577 ?publicationdate;

  filter ( lang(?title) = "en")
}  
ORDER BY ?item