是否可以从 OWL/RDF 本体动态创建 GraphQL 模式? 我们将数据(这里是本体)存储在 neo4j 数据库中。
有什么方法可以动态生成 graphql 模式吗?
由于您使用的是 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();