为什么我的SPARQL查询重复结果?

时间:2013-05-25 14:29:41

标签: rdf sparql owl

我正在进行一些搜索,并了解有关SPARQL的更多信息,但这并不像SQL那么容易。我只是想知道为什么我的查询重复结果以及如何修复它。这是我的SPARQL查询:

PREFIX OQ:<http://www.owl-ontologies.com/Ontology1364995044.owl#>

SELECT ?x ?ys ?z ?Souhaite
WHERE {
  ?y OQ:hasnameactivite ?x.
  ?y OQ:AttenduActivite ?Souhaite.
  ?y OQ:SavoirDeActivite ?z.
  ?y OQ:hasnamephase ?ys.
  ?y OQ:Activitepour ?v.
  ?ro OQ:hasnamerole ?nr.
  ?y OQ:avoirrole ?ro.
  FILTER regex (?nr ,"Concepteur").
  FILTER regex (?v,"Voiture").
}

这给了我这些结果:

enter image description here

预期结果是:

enter image description here

1 个答案:

答案 0 :(得分:5)

在第一次阅读您的问题时,我会回复您可以将查询中的SELECT更改为SELECT DISTINCT(使用DISTINCT modifier)以删除重复的结果。但是,查看结果集,我实际上看不到任何重复的答案。每一行似乎都是唯一的。 ?xs?ys的值都恰好相同,但?z?Souhaite的组合使行不同。您的结果基本上是产品{ xs1 } × { ys1 } × { z1, z2, z3 } × { S1, S2, S3 },并且不包含任何重复项。

我只是仔细查看了查询和您显示的结果,并且存在一些差异。例如,您的结果有一个名为?xs的变量,但您的查询不使用这样的变量。我将假设?x应该是?xs。此外,变量名称?xs?ys?z?Souhaite根本不具有描述性。当我们不知道它们在结果中扮演什么角色时,很难谈论这些。

关于您期望的结果,?xs?ys确实应该绑定到每一行。例如,您所需结果的第二行有?z?Souhaite,但没有?xs?ys,但如果没有?xs?ys,它们可能没有任何意义相应的?z/?Souhaite"Besoins …" "Schemas …",对吗?因此,我不会尝试解决第二和第三行中这些列为空白的问题;他们不应该是空白。

在预期的结果中,您删除了包含许多"Volume …" "Fourchette …"组合的行,例如{{1}}和{{1}}。这些出现在结果中,因为它们在您的数据中。如果您需要帮助清理数据以便不存在这些数据,我们需要查看您的数据,并了解它的来源。