我們在MarkLogic服務器上對某些臨牀本體數據運行SPARQL查詢。我們的查詢如下所示:有沒有辦法在MarkLogic 8中通過相關性分數對SPARQL查詢結果進行排序?
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX cts: <http://marklogic.com/cts#>
SELECT *
FROM <http://example/ontologies/snomedct>
WHERE {
?s rdfs:label ?o .
FILTER cts:contains(?o, cts:word-query("Smoke*", "wildcarded"))
}
LIMIT 10
我們希望根據相關性得分獲得排序結果,但是他們似乎是以某種隨機順序排列的。嘗試了許多方式與查詢,但沒有奏效。經過一番研究,我們發現在MarkLogic文檔這樣的說法:
當理解的表達式返回的順序,有考慮兩個 主要規則:
- CTS:搜索表達式總是在相關返回順序(與最不相關的最相關)。
- XPath表達式總是按文檔順序返回。
這是否意味着cts:contains是一個總是按文檔順序返回的XPath表達式?如果是這樣的話,我們如何構建一個按相關順序返回的SPARQL查詢?
感謝, 凱文
'CTS:search'是XQuery和不SPARQL – AKSW
@AKSW,我明白了。如果MarkLogic能夠將查詢結果以純SPARQL進行排名,那將會非常好。 –