SPARQL-запрос не работает - онтология SNOMED-CT
Я пытаюсь выполнить очень простой SPARQL-запрос для получения информации о конкретной болезни, используя https://bioportal.bioontology.org/ontologies/SNOMEDCT/?p=classes&conceptid=root (в Java) на основе имени, переданного в Строка запроса, и я не понимаю, почему это не работает. Вот соответствующий код:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT *
FROM <http://bioportal.bioontology.org/ontologies/SNOMEDCT>
FROM <http://bioportal.bioontology.org/ontologies/globals>
WHERE
{
?x rdfs:label ?label .
FILTER (CONTAINS ( UCASE(str(?label)), "MELANOMA") )
}
1 ответ
Единственное появление rdfs:label
в СНОМЕД-КТ на Биопортале есть snomed-term: rdfs:label "SNOMEDCT"
, BioPortal использует skos:prefLabel
(который является подзаголовком rdfs:label
) вместо
Попробуйте этот запрос:
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX snomed-term: <http://purl.bioontology.org/ontology/SNOMEDCT/>
SELECT DISTINCT *
FROM <http://bioportal.bioontology.org/ontologies/SNOMEDCT>
FROM <http://bioportal.bioontology.org/ontologies/globals>
WHERE {
?x skos:prefLabel ?label .
FILTER (CONTAINS ( UCASE(str(?label)), "MELANOMA") )
}
Там должно быть 10 результатов.
Если вам нужно ограничить результаты заболеваниями, возможно, вам придется добавить ?x rdfs:subClassOf+ snomed-term:64572001
на ваш запрос. Но, к сожалению, кажется, что конечная точка BioPortal SPARQL не поддерживает пути свойств SPARQL 1.1.