2017-04-18 21 views
0

我有兩個圖表,其中一個文字標記爲(@de),另一個未標記。我需要兩者之間的聯合。帶有過濾器的簡單解決方案運行非常緩慢。使用不同的語言代碼搜索文字

與定式工作的改進版本是

WHERE { 
?tok nlp:lemma ?lem . 
Bind (str(?lem) as ?lems) . 
?lu :orthForm ?lems . 
... 

我試圖?lu :xx (str(?lem)) .但這標記爲錯誤。爲什麼? 同樣,使用value ?lems {str(?lem)}.

我天真地認爲綁定不會產生太多的開銷,因此上述解決方案可能o.k.

會爲當語言代碼是不同的my previous question

+0

我沒有得到第一個例子。 FILTER看起來很奇怪,或者你真的想讓這個主題和目標相同嗎? – AKSW

回答

1

允許的三重模式的唯一搜索同樣的方法工作是變量,的URI,文字(對象)和bnodes。因此,而不是模式?lu :xx (str(?lem)),您將需要使用BIND或投影將變量轉換爲字符串。以第一個例子:

WHERE { 
    ?lu :xx ?langLem . 
    BIND(str(?langLem) AS ?lem) 
} 

或者,使用投影:

SELECT (str(?langLem) AS ?lem) 
WHERE { 
    ?lu :xx ?langLem . 
} 

我假設你正在嘗試使用VALUES聲明value ?lems {str(?lem)}VALUES通常用於變量綁定到一組值,例如:

VALUES ?lem { :Euclid :Gauss } 
?lem rdfs:label ?label . 

...結合?lem:Euclid:Gauss並執行查詢,返回結果集。即它是相同的:

{ :Euclid rdfs:label ?label } 
UNION 
{ :Gauss rdfs:label ?label }