Tree 使用HyperGraphQL检索父对象和子对象
我正在查询包含using的文件,以便检索给定GO id的父/祖先和子/后代 我可以使用以下查询检索父项:Tree 使用HyperGraphQL检索父对象和子对象,tree,graphql,ontology,Tree,Graphql,Ontology,我正在查询包含using的文件,以便检索给定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 subClass
{
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")
}
我知道这取决于本体中定义的字段,例如,在第一次查询中,我使用了subcassof
来获取顶层
在中,我们可以得到这样的家长:
GO:0000XYZ rdfs:subClassOf ?parent
和孩子:
GO:0000XYZ ^rdfs:subClassOf ?child
# or
?child rdfs:subClassOf obo:GO_0000XYZ .
正如您所看到的,我们可以通过切换查询来获得这两种结果,有没有一种方法可以使用GraphQL执行类似的操作
编辑以澄清我的问题
我知道,我们必须明确指定使用GraphQL提取的深度/级别数
我在这里面临的限制是无法通过树向下移动,因为我可以使用superClassOf
例如,如果我们想象我们有超类
字段,我们可以这样做:
{
Class_GET_BY_ID(uris:["http://purl.obolibrary.org/obo/GO_0032259"]) {
id
label
superClassOf {
id
label
superClassOf {
...
}
}
}
}
虽然这个字段不存在似乎是合乎逻辑的,因为它在我们使用SPARQL的情况下没有用处,因为我们可以像上面的查询所示,只使用
subassof
轻松地上下移动。在GraphQL中模拟SPARQL属性路径似乎是不可能的:。在triplestore中启用推断。感谢@StanislavKralin的回复,我查看了github问题,主要讨论了使用递归查询获取所有父/子对象的可能性,在我的问题中,我对深度没有问题,很抱歉,可能最后两个SPARQL查询比较混乱,我编辑了我的问题以使它更清楚。啊,你说的是^
而不是*
!好的。@StanislavKralin,是的,你是对的。这似乎不可能在GraphQL中模拟SPARQL属性路径:。在triplestore中启用推断。感谢@StanislavKralin的回复,我查看了github问题,主要讨论了使用递归查询获取所有父/子对象的可能性,在我的问题中,我对深度没有问题,很抱歉,可能最后两个SPARQL查询比较混乱,我编辑了我的问题以使它更清楚。啊,你说的是^
而不是*
!好的。@StanislavKralin,是的,你是对的。