2015-05-06 31 views
0

鑑於圖http://example.org/爲:顯然是不必要的SPARQL篩選

@prefix foaf:<http://xmlns.com/foaf/0.1/purl>. 
<uri:alice> foaf:name "Alice". 
<uri:bob> foaf:name "Bob". 
<uri:carl> foaf:name "Carl". 

爲什麼這個SPARQL查詢工作:

PREFIX foaf:<http://xmlns.com/foaf/0.1/purl> 
SELECT * 
WHERE { 
    GRAPH <http://example.org/> { 
     ?model_ic foaf:name ?name. 
     FILTER (?name = "Bob") 
    } 
} 

而這一個沒有(當然,從技術上它的工作原理,但返回0匹配)

PREFIX foaf:<http://xmlns.com/foaf/0.1/purl> 
SELECT * 
WHERE { 
    GRAPH <http://example.org/> { 
     ?model_ic foaf:name "Bob". 
    } 
} 
+0

也許...因爲你有一個錯字? 如何在第二個SPARQL上更改「bob」=>「Bob」? –

+0

非常感謝您的支持,但這不是問題所在。 – ffa

回答

1

如果有任何其他名稱的附件而只有字符串,您可能會遇到問題。例如,foaf:name通常附有一種語言。試試:

PREFIX foaf:<http://xmlns.com/foaf/0.1/purl> 
SELECT * 
WHERE { 
GRAPH <http://example.org/> { 
    ?model_ic foaf:name "Bob"@en. 
} 
} 
+1

謝謝,我已經手動使用了命令INSERT {GRAPH {foob:name「Bob」}}'手動添加一個可識別的三元組,現在它按預期工作。 – ffa

+0

我試着運行一個查詢,比如'SELECT?b?c WHERE {foob:name?name。 ?name?b?c}'突出顯示任何可能的@標記,但似乎再次無法工作。我該怎麼做? – ffa

+0

您是否嘗試過他提供的查詢?而當你有'namespace:bob'時,你不需要'<>'。您需要查找元素的URI,然後查找有關該元素的所有信息。 – Artemis