是否可以在SPARQL查詢中篩選出包含不可解析的URI的結果?如何在SPARQL查詢上過濾不可解析的URI?
舉個例子:我在做下面的查詢(端點:http://linkeddata.systems:8890/sparql):
PREFIX RO: <http://www.obofoundry.org/ro/ro.owl#>
PREFIX SIO: <http://semanticscience.org/resource/>
PREFIX EDAM: <http://edamontology.org/>
PREFIX PHIO: <http://linkeddata.systems/ontologies/SemanticPHIBase#>
PREFIX PUBMED: <http://linkedlifedata.com/resource/pubmed/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX up: <http://purl.uniprot.org/core/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT ?disn_1 ?label ?rel ?valor
WHERE { ?disn_1 ?rel ?valor . ?disn_1 rdfs:label ?label FILTER((?disn_1 = <http://linkeddata.systems/SemanticPHIBase/Resource/host/HOST_00561>))}
在結果中,你可以看到有在英勇變量,它包含非解析URI三? (文本:/ hostncbitaxid /)。我想知道是否有一些特定的FILTER可以在SPARQL查詢中添加,以便使用不可解析的URI刪除這些結果。
我遇到了我用來在C#中處理這些結果的API的問題,因爲它由於不可解析的URI而返回異常,所以我想在SPARQL查詢中將它們過濾掉(如果可能的話)。
嗨,Joshua,謝謝你的回覆。我已經做了這樣的事情,但問題是,它過濾掉了一個不是URI的結果(具體地說,那個?valor是「」host - null - HOST_00561「@」的結果是否可能只過濾掉類型爲「URI」的那些值,正如你所說的,並不是以http開頭的? – alejandrorg
@alejandrorg當然,只要將過濾器改爲filter(!isURI(?x)|| strstarts(str (?x),「http」))'。 –