Sparql 向GraphQL查询传递多个参数

Sparql 向GraphQL查询传递多个参数,sparql,graphql,Sparql,Graphql,第一件事 请理解,这可能是一个有点愚蠢的问题,但我正在使用GraphQL,因为它来自RDF/链接数据世界,在理解如何返回集合时遇到了很多困难。本质上,我想要一些我可以选择的东西,比如说一个字符列表(使用GraphQL文档中的示例),通过它们的id。在SPARQL中,我将使用VALUES子句,然后进行绑定,类似于: VALUES { <http://uri/id-1> <http://uri/id-2> <http://uri/id-3> } 我想做什么就做什

第一件事

请理解,这可能是一个有点愚蠢的问题,但我正在使用GraphQL,因为它来自RDF/链接数据世界,在理解如何返回集合时遇到了很多困难。本质上,我想要一些我可以选择的东西,比如说一个
字符列表(使用GraphQL文档中的示例),通过它们的
id
。在SPARQL中,我将使用
VALUES
子句,然后进行绑定,类似于:

VALUES { <http://uri/id-1> <http://uri/id-2> <http://uri/id-3> }
我想做什么就做什么,但我不想事先或手动指定不同的命名返回值是什么-我想在代码中说传递ID列表:

[1 2 3 4 5]
…并具有一个查询,该查询可以接受该ID数组,并按照上面的伪查询以可预测的非标量形状返回结果

第二件事


我还假设实际上不可能将查询解析为
[Human]
——它必须是一个还是另一个?没什么大不了的,如果是这样,我就接受后者。。。但我想我现在对这一点很困惑。

首先,您需要通过添加一个“humans”来扩展您的查询:

第二,为它编写一个解析器

Query: {
  humans(root, {listId}, { Human }) {
    return Human.fillAllByListId(listId);
  },
  ...
},
可以按如下方式传递ID列表:

对于Hasura,您可以这样做(IDK,如果这只适用于Hasura)


这是一个

示例,我是否认为这是错误的,我应该定义一个
切片
类型,在这个类型中,我可以定义多个参数,将一个假设列表分割为多个范围?即便如此,对于处理资源列表来说,这种感觉还是次优。理想情况下,我希望避免像
“[1 2 3 4 5]”
这样的字符串输入,因此我不必担心解析问题,尽管我认为这是最后的选择。
extend type Query {
  humans(listId: [String!]): [Human!]
  human(id: ObjID!): Human
}
Query: {
  humans(root, {listId}, { Human }) {
    return Human.fillAllByListId(listId);
  },
  ...
},
query getConfigurationList($ids: [String!]!) {
    configuration (where: {id:{_in: $ids}}){
        id
        value
    }
}