2013-05-25 82 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