Sparql结果重复个体

Sparql结果重复个体,sparql,protege,Sparql,Protege,我尝试启动SPARQL查询,但输出显示重复的个体。 这很奇怪,因为使用Snap SPARQL查询时一切都很好,但使用SPARQL查询时存在重复项: 我无法使用DISTINCT,因为我要启动的真正查询是: PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.or

我尝试启动SPARQL查询,但输出显示重复的个体。 这很奇怪,因为使用Snap SPARQL查询时一切都很好,但使用SPARQL查询时存在重复项:

我无法使用DISTINCT,因为我要启动的真正查询是:

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX re: <http://www.semanticweb.org/buzzo/ontologies/2017/renewable_energy#>
SELECT ?individual (SUM(?result) AS ?totalDim)
WHERE {

?individual rdf:type owl:NamedIndividual .
?individual rdf:type re:Fotovoltaico .
?pannello re:èPannelloDi ?individual .
?pannello re:haDimensione ?dim .
?dim re:lunghezza ?lun .
?dim re:larghezza ?larg .
BIND((?lun*?larg) AS ?result) .
}
GROUP BY ?individual
前缀owl:
前缀rdf:
前缀rdfs:
前缀re:
选择单个(总和(?结果)作为总尺寸)
在哪里{
?单个rdf:type owl:NamedIndividual。
?单个rdf:re型:Fotovoltaico。
?pannello re:èPannelloDi?个人。
?pannello re:尺寸?尺寸。
?dim re:lunghezza?lun。
?变暗re:拉格萨?拉格。
绑定((?lun*?larg)作为结果)。
}
分组?个人
我解释:此查询获取所有光伏板尺寸(?larg*?lun),为每个尺寸生成乘积,并对属于其工厂的每个面板的结果求和。 DISTINCT是在流程结束时运行的,因此此查询会对大量重复维度求和。有一种方法可以在求和之前应用DISTINCT

例如:我有3个尺寸为20x20的面板,因此产品为20*20=400。 3面板*400=1200作为结果。 但是如果我有重复项,比如每个面板有5个重复项,查询结果是: 3个面板*5个副本=15*400=6000 这是我的问题


我正在使用Protege。

与SQL类似,可以使用解决方案修饰符
DISTINCT
,请参见:

前缀owl:
前缀rdf:
前缀rdfs:
前缀re:
选择不同的个人
在哪里{
?单个rdf:type owl:NamedIndividual。
?单个rdf:re型:Fotovoltaico。
}
个人订购
由于完全不同的查询而更新 在执行聚合函数之前,您可以在
SUM
中再次使用
DISTINCT
来删除重复项:

前缀re: 前缀owl: 前缀rdf: 选择单个(和(不同的结果)作为totalDim) 哪里 {?单个rdf:type owl:NamedIndividual; rdf:re型:Fotovoltaico。 ?pannello re:èPannelloDi?个人; 回复:HaDimension?dim。 ?dim re:lunghezza?lun; 回复:larghezza?larg 绑定((?lun*?larg)作为结果) } 分组?个人
与SQL类似,可以使用解决方案修饰符
DISTINCT
,请参见:

前缀owl:
前缀rdf:
前缀rdfs:
前缀re:
选择不同的个人
在哪里{
?单个rdf:type owl:NamedIndividual。
?单个rdf:re型:Fotovoltaico。
}
个人订购
由于完全不同的查询而更新 在执行聚合函数之前,您可以在
SUM
中再次使用
DISTINCT
来删除重复项:

前缀re: 前缀owl: 前缀rdf: 选择单个(和(不同的结果)作为totalDim) 哪里 {?单个rdf:type owl:NamedIndividual; rdf:re型:Fotovoltaico。 ?pannello re:èPannelloDi?个人; 回复:HaDimension?dim。 ?dim re:lunghezza?lun; 回复:larghezza?larg 绑定((?lun*?larg)作为结果) } 分组?个人

我不能使用DISTINCT,因为我必须做其他事情,比如SUM。在区分我不知道的内容之前应用SUM…但是,如果你想使用
SUM
,那么你必须使用
GROUP BY
,它隐式删除重复项。下一次,请提供“真实”查询,这样我就可以避免不恰当的答案-尽管根据你的问题,我的答案肯定是正确的,我很抱歉,我改变了我不能使用DISTINCT的问题,因为我必须做其他类似SUM的事情。在区分我不知道的内容之前应用SUM…但是,如果你想使用
SUM
,那么你必须使用
GROUP BY
,它隐式删除重复项。下一次,请提供“真实”查询,这样我就可以避免不恰当的答案-尽管根据你的问题,我的答案肯定是正确的,我很抱歉,我换个问题你能澄清一下重复的是什么吗?可能会显示两组您想要避免的三元组:问题是
?单个rdf:type owl:NamedIndividual
。我删除了这一行,不再有重复的内容了谢谢你的帮助:)说实话,我不明白为什么会出现重复的内容。您仍然有另一个三重模式
?单个rdf:type re:fotovoltaic.
,要么有匹配的个体,要么没有匹配的个体-这不可能是解决方案。我不知道,但没有我提到的行,就没有更多的重复项。您能澄清重复项是什么吗?可能会显示两组您想要避免的三元组:问题是
?单个rdf:type owl:NamedIndividual
。我删除了这一行,不再有重复的内容了谢谢你的帮助:)说实话,我不明白为什么会出现重复的内容。您仍然有另一个三重模式
?单个rdf:type re:fotovoltaic.
,或者有匹配的个体,或者没有匹配的个体-这不可能是解决方案。我不知道,但是没有我提到的行,就没有更多的重复