我正在使用go.owl查询包含Gene Ontology的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 {
...
}
}
}
}
}
但是我不知道该怎么做才能提取后代。
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
轻松地上下移动,如上面的查询所示。>