Rdf 进行SPARQL查询时重复行

Rdf 进行SPARQL查询时重复行,rdf,sparql,Rdf,Sparql,我想从欧洲议会摘录关于特定议程项目的演讲,可通过SPARQL界面访问: 数据库的架构可在此处找到: 通过以下查询 SELECT ?speaker ?given ?surname ?acronym ?text ?partyLabel ?type WHERE { <http://purl.org/linkedpolitics/eu/plenary/2010-12-16_AgendaItem_4> dcterms:hasPart ?speech. ?speech lpv:spe

我想从欧洲议会摘录关于特定议程项目的演讲,可通过SPARQL界面访问:

数据库的架构可在此处找到:

通过以下查询

SELECT ?speaker ?given ?surname ?acronym ?text ?partyLabel ?type
WHERE {
   <http://purl.org/linkedpolitics/eu/plenary/2010-12-16_AgendaItem_4> dcterms:hasPart ?speech.
   ?speech lpv:speaker ?speaker.
   ?speaker foaf:givenName ?given.
   ?speaker foaf:familyName ?surname.
   ?speaker lpv:countryOfRepresentation ?country.
   ?country lpv:acronym ?acronym.
   ?speech lpv:translatedText ?text.
   ?speaker lpv:politicalFunction ?func.
   ?func lpv:institution ?institution.
   ?institution rdfs:label ?partyLabel.
   ?institution rdf:type ?type.
   FILTER(langMatches(lang(?text), "en"))
}
SELECT?speaker?给定?姓氏?首字母缩写?文本?partyLabel?类型
在哪里{
D术语:有部分?演讲。
?语音lpv:扬声器?扬声器。
foaf演讲者:givenName?given。
?发言人foaf:家庭名称?姓氏。
?扬声器lpv:国家/地区?国家/地区。
?国家lpv:首字母缩写?首字母缩写。
?语音lpv:翻译文本?文本。
?扬声器lpv:政治功能?功能。
?职能lpv:机构?机构。
?机构rdfs:标签?零件标签。
?机构rdf:类型?类型。
过滤器(langMatches(lang(?text),“en”))
}

我得到了我想要的信息,但是所有的行都重复了好几次。这种情况发生在我试图通过政治功能来获取党的标签时。如何仅获取唯一行以及重复行出现在第一位的原因是什么?

您使用了大量变量,但并没有选择所有变量。这意味着您要返回的行中的差异可能在您没有实际选择的变量中。例如,如果您有数据:

:a :hasChild :b .
:a :hasChild :c .
然后您运行了查询:

select ?parent where {
  ?parent :hasChild ?child .
}
您将在结果中得到两行:

?parent
-------
:a
:a
因为有两个绑定提供解决方案:一个where?child是:a,另一个where child是?b

为了避免这种情况,您可以使用选择distinct,这将删除“重复”的结果行。只要做:

选择不同的?说话人?给定?姓氏?首字母缩略词?文本?partyLabel?类型


我遇到了类似的问题,我找到了一个解决方案: