我正在进行一些搜索,并了解有关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").
}
这给了我这些结果:
预期结果是:
答案 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}}。这些出现在结果中,因为它们在您的数据中。如果您需要帮助清理数据以便不存在这些数据,我们需要查看您的数据,并了解它的来源。