SPARQL-从相关变量的结果中排除一个变量

时间:2019-03-14 16:28:31

标签: sparql wikidata

我正在查询Wikidata,目的是创建一组爱丁堡或格拉斯哥大学的校友,他们是苏格兰议会的现任议员。然后,我想返回的是他们担任过的其他职务的清单,以及每个职务的担任该职务的其他在职人员的姓名,无论他们是否是校友。

我已经解决了上述问题,但是在其他情况下,担任办公室成员的其他人的结果集-可变变量-其他-包括了可变变量Alumni的原始主题。我希望所有其他办公人员,不包括映射到?alumni的人员。查询时间很长,因此只包括相关部分。

#associate ?alumni with positions of office
?alumni p:P39 ?officeStmnt .
?officeStmnt ps:P39 ?role .
?role rdfs:label ?roleLabel .
 FILTER (langMatches(lang(?roleLabel ), "en")) .
 FILTER NOT EXISTS 
 {
 FILTER(langMatches(lang(?roleLabel ), "en-ca")) 
  }.
FILTER NOT EXISTS 
 {
 FILTER(langMatches(lang(?roleLabel ), "en-gb")) 
 } .

#Filter for member of 5th Scottish Parliament
VALUES (?role)
 {  
  (wd:Q30580546)
 } . 


?alumni p:P39 ?officeStmnts .
?officeStmnts ps:P39/rdfs:label ?rolesLabel .
FILTER (langMatches(lang(?rolesLabel ), "en")) .
FILTER (!regex (?rolesLabel,"Member of")) .
?rolesLabel ^rdfs:label ?roles .
?roles ^ps:P39/^p:P39 ?others .
 ?others rdfs:label ?othersLbl .
FILTER (langMatches(lang(?othersLbl  ), "en")) .
BIND (xsd:string(?othersLbl) AS ?othersStr)

0 个答案:

没有答案