Возможно ли отфильтровывать результаты, содержащие неразрешимый URI в запросе SPARQL?Как фильтровать неразрешимые URI в запросе SPARQL?
Пример: Я делаю следующий запрос (конечная точка: 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.
У меня возникли проблемы с API, которые я использую для обработки этих результатов на C#, потому что он возвращает исключение из-за неразрешимых URI, поэтому я хотел бы отфильтровать их в запросе SPARQL (если возможно).
Привет, Джошуа, спасибо за ваш ответ. Я уже сделал что-то подобное, но проблема в том, что он отфильтровывает один из результатов, что это не URI (конкретно, тот, где «valor is» «Host-null-HOST_00561« @en ». отфильтруйте только те значения «valor» с типом «URI» и что, как вы сказали, не начинается с http – alejandrorg
@alejandrorg. Конечно, просто измените фильтр на 'filter (! isURI (? x) || strstarts (str (? x), "http")). –