Tree 使用HyperGraphQL检索父对象和子对象

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

我正在查询包含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
      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,是的,你是对的。