动态生成 GraphQL 模式

问题描述 投票:0回答:2

是否可以从 OWL/RDF 本体动态创建 GraphQL 模式? 我们将数据(这里是本体)存储在 neo4j 数据库中。

有什么方法可以动态生成 graphql 模式吗?

graphql owl neo4j-apoc
2个回答
1
投票

如果您使用的是 postgres,您可以使用 hasura(我最喜欢的)从数据库生成即时 graphql 模式。他们还构建了 2.0 版本来处理 mssql 服务器。

但是如果您坚持使用 Neo4j,您可以使用 Loopback 4 从数据库获取 graphql 模式。基本上他们构建 REAST API。他们有一个用于 neo4j 的社区连接器


0
投票

由于您使用的是 Neo4j,因此您可以使用他们的 introspector 工具,该工具可以立即生成类型绑定。这是通过查询图形中的标签、边和关联属性来实现的。然后它将它们写入磁盘以供 GraphQL 实例读取。只要确保在架构更改时重新运行内省器即可。

const { toGraphQLTypeDefs } = require("@neo4j/introspector");
const neo4j = require("neo4j-driver");
const fs = require("fs");

const driver = neo4j.driver("neo4j://localhost:7687", neo4j.auth.basic("neo4j", "password"));

const sessionFactory = () => driver.session({ defaultAccessMode: neo4j.session.READ });

// We create a async function here until "top level await" has landed
// so we can use async/await
async function main() {
    const typeDefs = await toGraphQLTypeDefs(sessionFactory);
    fs.writeFileSync("schema.graphql", typeDefs);
    await driver.close();
}
main();
© www.soinside.com 2019 - 2024. All rights reserved.