Я запрашиваю go.owl файл, содержащий Онтологию гена , используя HyperGraphQL , чтобы найти родителей / предков и детей / потомков дающихGO id
Я мог бы найти родителей, используя запрос:
{
Class_GET_BY_ID(uris:[
"http://purl.obolibrary.org/obo/GO_0032259",
"http://purl.obolibrary.org/obo/GO_0007267"]) {
id
label
subClassOf {
id
label
subClassOf {
id
label
subClassOf {
...
}
}
}
}
}
, но я не знаю, как сделать то же самое для извлечения потомков.
The schema.graphql
:
type __Context {
Class: _@href(iri: "http://www.w3.org/2002/07/owl#Class")
id: _@href(iri: "http://www.geneontology.org/formats/oboInOwl#id")
label: _@href(iri: "http://www.w3.org/2000/01/rdf-schema#label")
subClassOf: _@href(iri: "http://www.w3.org/2000/01/rdf-schema#subClassOf")
}
type Class @service(id:"go-local") {
id: [String] @service(id:"go-local")
label: [String] @service(id:"go-local")
subClassOf: [Class] @service(id:"go-local")
}
Я знаю, что это зависит от полей, определенных в онтологии, например, в первом запросе, который я использовал subClassOf
, чтобы получить верхний уровень.
В SPARQL мы можем получить родителя следующим образом:
GO:0000XYZ rdfs:subClassOf ?parent
И потомка:
GO:0000XYZ ^rdfs:subClassOf ?child
# or
?child rdfs:subClassOf obo:GO_0000XYZ .
Как вы видите, мы можем получить и то и другое, просто переключив запрос.способ сделать что-то подобное, используя GraphQL?
РЕДАКТИРОВАТЬ Чтобы прояснить мою проблему
Я знаю, что мы должны явно указать глубину / количество уровней, которые мы хотимдля извлечения с использованием GraphQL.
Это ограничение, с которым я сталкиваюсь здесь, заключается в том, что невозможно пройти по дереву какЯ могу подняться, используя superClassOf
Например, если мы представим, что у нас есть поле superClassOf
, мы можем сделать это следующим образом:
{
Class_GET_BY_ID(uris:["http://purl.obolibrary.org/obo/GO_0032259"]) {
id
label
superClassOf {
id
label
superClassOf {
...
}
}
}
}
Кажется логичным, что это полене существует, так как это бесполезно, если мы используем SPARQL, поскольку мы можем легко перемещаться вверх и вниз, используя только subClassOf
, как показано в запросе выше.