2013-05-25 45 views
0

我正在做一些搜索,并学习更多关于SPARQL的知识,但它不像SQL那么容易。我只想知道为什么我的查询重复结果以及如何解决它。这是我的SPARQL查询:为什么我的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

+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 …"。这些出现在结果中,因为它们在您的数据中。如果您希望帮助清理您的数据,以便这些数据不存在,我们需要查看您的数据,并从数据的来源中了解相关信息。

+0

结果预期是只显示一次xs&ys和dsplay其他没有重复xs&ys! – user2420469

+0

在以“SELECT?x?ys?z?Souhaite”开头的查询中,每个解决方案(即结果的每一行)都包含每个“SELECT”变量的值。结果中没有重复的解决方案;每行不同于其他行。如果您在问题中添加了您期望的结果示例(例如,以与您实际得到的结果相同的格式),我们可能会找出可以运行的查询类型。 –

+0

好吧,我已经添加了结果 – user2420469