跳转到主要内容
Chinese, Simplified

category

在这个由两部分组成的系列的第一部分(链接到第一部分)中,我们看到了如何使用知识图来模拟思维过程。在这部分,让我们把手弄脏!😄

我们将使用一个名为Cayley的开源图形数据库作为KG后端。根据您的操作系统,从这里获取最新的二进制文件。下载后,转到根目录并找到cayley.yml文件。如果它不存在,请创建它。应该有一个cayley_example.yml文件来指导您。该文件是cayley的配置文件。该文件的一个重要用途是设置存储图形的后端数据库。有几个选项可用(请参阅文档)。我们将使用MySQL作为数据库。我假设你已经安装了MySQL。如果没有,安装它非常简单(谷歌:P)。现在,请确保您的cayley.yml文件如下所示:(将<your_root_password>替换为MySQL根的实际密码,并将<your_database_name>替换为数据库名称。

cayley.yml:

store:
  # backend to use
  backend: "mysql"
  # address or path for the database
  address: "root:<your_root_password>#@tcp(localhost:3306)/<your_database_name>"
  # open database in read-only mode
  read_only: false
  # backend-specific options
  options:
    nosync: false
query:
  timeout: 30s
load:
  ignore_duplicates: false
  ignore_missing: false
  batch: 10000

now let’s start our graph I am using windows so exact commands might differ from Mac and Linux. You can see (this file):

打开命令提示符/terminal,转到cayley根目录,并在terminal中键入以下内容:

cayley init

Cayley将自动检测Cayley.yml文件中的配置并建立数据库。现在要加载一个图形数据库,我们需要了解一种叫做“模式”的东西。

模式是表示信息的一种特定方式。例如,JSON(JavaScript对象表示法)就是模式的一个例子。有关模式的更多信息,请访问Schema.org的网站。在这里,我们将使用一个名为“N-quads”的模式。有关N-quad的更多信息,请点击此处。

An N-quad schema of a small social network

在上面的示例N-quad文件中,我们有一个类似的模式:<person><follows><person><status>。这意味着两个<person>是图的节点,<followes>是它们之间的“方向关系”<status>是可选的,并对关系进行了更多描述。

现在,下一步是将其加载到我们的MySQL数据库中。要执行此操作,请运行:

cayley load -i <path_to_nquads_file>

将<path_to_quads_file>替换为N-quads文件的相对路径。制作一个N-quad文件很容易。只需在N-quad模式中写入并使用“.nq”扩展名保存即可。

将图形加载到cayley后,您可以运行一个web实例,使用gizmo查询语言(这并不难理解)与您的KG进行交互和可视化。运行:

cayley http

Go to localhost:64210 on your browser and you can see something like this:

Cayley Web Interface

您可以在此处键入任何查询以与您的KG交互。示例查询为:

g.V().All()

这意味着获取图形对象“g”的所有顶点。有关查询语言的更多信息,请点击此处。

您还可以在web应用程序中可视化图形。阅读文档以便能够做到这一点。

现在是有趣的部分(没有人告诉你):

我们使用Cayley图数据库和MySql实现了一个简单的知识图。我们可以在不使用网络应用程序的情况下远程与此图形交互吗?对Cayley向API端点公开图形:http://127.0.0.1:64210/api/v1/query/gizmo

我们可以使用python“requests”库来进行POST请求,并在任何需要的地方查询Graph(Cayley应该在后台运行以提供API端点)。

import requests
import jsonquery = "g.V().All()"
endpoint = "http://127.0.0.1:64210/api/v1/query/gizmo"
response = requests.post(endpoint, data=query)#the response is a JSON object
json_response = response.json()
print(json_response)

在Jupyter Notebook中运行上面的代码,您应该能够看到API的JSON响应并使用它!

那都是人!希望你喜欢这个。

原文地址
https://shaswatlenka.medium.com/implementing-a-knowledge-graph-python-de73a48362df
本文地址
Article

微信

知识星球

微信公众号

视频号