feat: 增加对neo4j的增改查

This commit is contained in:
2026-04-15 14:24:39 +08:00
parent c9643db67e
commit 37cd2171b1
11 changed files with 2148 additions and 348 deletions
+398
View File
@@ -15,6 +15,99 @@ const docTemplate = `{
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/api/edges": {
"post": {
"description": "在知识图谱中创建一个新边(关系)",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"summary": "创建边",
"parameters": [
{
"description": "边创建请求",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.CreateEdgeRequest"
}
}
],
"responses": {
"200": {
"description": "创建成功",
"schema": {
"$ref": "#/definitions/models.EdgeResponse"
}
},
"400": {
"description": "请求错误",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
},
"404": {
"description": "源节点或目标节点未找到",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
},
"409": {
"description": "边已存在",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
},
"500": {
"description": "内部错误",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
}
}
}
},
"/api/edges/{id}": {
"delete": {
"description": "从知识图谱中删除指定的边",
"produces": [
"application/json"
],
"summary": "删除边",
"parameters": [
{
"type": "string",
"description": "边ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "删除成功",
"schema": {
"$ref": "#/definitions/models.DeleteResponse"
}
},
"404": {
"description": "边未找到",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
},
"500": {
"description": "内部错误",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
}
}
}
},
"/api/graph": {
"get": {
"description": "获取知识图谱的全部节点和边数据",
@@ -62,6 +155,55 @@ const docTemplate = `{
}
}
},
"/api/nodes": {
"post": {
"description": "在知识图谱中创建一个新节点",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"summary": "创建节点",
"parameters": [
{
"description": "节点创建请求",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.CreateNodeRequest"
}
}
],
"responses": {
"200": {
"description": "创建成功",
"schema": {
"$ref": "#/definitions/models.Node"
}
},
"400": {
"description": "请求错误",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
},
"409": {
"description": "节点已存在",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
},
"500": {
"description": "内部错误",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
}
}
}
},
"/api/nodes/{id}": {
"get": {
"description": "根据节点 ID 获取知识图谱中的节点详细信息",
@@ -104,6 +246,96 @@ const docTemplate = `{
}
}
}
},
"put": {
"description": "更新知识图谱中指定节点的信息",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"summary": "更新节点",
"parameters": [
{
"type": "string",
"description": "节点ID",
"name": "id",
"in": "path",
"required": true
},
{
"description": "节点更新请求",
"name": "request",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/models.UpdateNodeRequest"
}
}
],
"responses": {
"200": {
"description": "更新成功",
"schema": {
"$ref": "#/definitions/models.Node"
}
},
"400": {
"description": "请求错误",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
},
"404": {
"description": "节点未找到",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
},
"500": {
"description": "内部错误",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
}
}
},
"delete": {
"description": "从知识图谱中删除指定节点及其相关的所有边",
"produces": [
"application/json"
],
"summary": "删除节点",
"parameters": [
{
"type": "string",
"description": "节点ID",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "删除成功",
"schema": {
"$ref": "#/definitions/models.DeleteResponse"
}
},
"404": {
"description": "节点未找到",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
},
"500": {
"description": "内部错误",
"schema": {
"$ref": "#/definitions/models.ErrorResponse"
}
}
}
}
},
"/api/nodes/{id}/neighbors": {
@@ -190,6 +422,107 @@ const docTemplate = `{
}
},
"definitions": {
"models.CreateEdgeRequest": {
"type": "object",
"required": [
"id",
"label",
"source",
"target"
],
"properties": {
"id": {
"description": "边的唯一标识",
"type": "string",
"example": "edge_123"
},
"label": {
"description": "边的显示标签",
"type": "string",
"example": "包含"
},
"properties": {
"description": "自定义属性",
"type": "object",
"additionalProperties": true
},
"source": {
"description": "源节点ID",
"type": "string",
"example": "node_1"
},
"target": {
"description": "目标节点ID",
"type": "string",
"example": "node_2"
},
"type": {
"description": "边的类型(可选,默认为关系类型)",
"type": "string",
"example": "CONTAINS"
}
}
},
"models.CreateNodeRequest": {
"type": "object",
"required": [
"id",
"label",
"type"
],
"properties": {
"id": {
"description": "节点唯一标识",
"type": "string",
"example": "node_123"
},
"label": {
"description": "节点显示标签",
"type": "string",
"example": "人工智能"
},
"properties": {
"description": "自定义属性",
"type": "object",
"additionalProperties": true
},
"type": {
"description": "节点类型",
"type": "string",
"example": "概念"
},
"x": {
"description": "X坐标(可选)",
"type": "number",
"example": 100
},
"y": {
"description": "Y坐标(可选)",
"type": "number",
"example": 200
}
}
},
"models.DeleteResponse": {
"type": "object",
"properties": {
"id": {
"description": "被删除的实体ID(可选)",
"type": "string",
"example": "node_123"
},
"message": {
"description": "消息",
"type": "string",
"example": "节点已成功删除"
},
"success": {
"description": "是否成功",
"type": "boolean",
"example": true
}
}
},
"models.Edge": {
"type": "object",
"properties": {
@@ -218,6 +551,41 @@ const docTemplate = `{
}
}
},
"models.EdgeResponse": {
"type": "object",
"properties": {
"id": {
"description": "边的ID",
"type": "string",
"example": "edge_123"
},
"label": {
"description": "边的显示标签",
"type": "string",
"example": "包含"
},
"properties": {
"description": "自定义属性",
"type": "object",
"additionalProperties": true
},
"source": {
"description": "源节点ID",
"type": "string",
"example": "node_1"
},
"target": {
"description": "目标节点ID",
"type": "string",
"example": "node_2"
},
"type": {
"description": "边的类型",
"type": "string",
"example": "CONTAINS"
}
}
},
"models.ErrorResponse": {
"type": "object",
"properties": {
@@ -325,6 +693,36 @@ const docTemplate = `{
}
}
}
},
"models.UpdateNodeRequest": {
"type": "object",
"properties": {
"label": {
"description": "节点显示标签",
"type": "string",
"example": "机器学习"
},
"properties": {
"description": "自定义属性(更新)",
"type": "object",
"additionalProperties": true
},
"type": {
"description": "节点类型",
"type": "string",
"example": "工具"
},
"x": {
"description": "X坐标",
"type": "number",
"example": 150
},
"y": {
"description": "Y坐标",
"type": "number",
"example": 250
}
}
}
}
}`
+710 -302
View File
File diff suppressed because it is too large Load Diff
+320 -39
View File
@@ -1,5 +1,83 @@
basePath: /
definitions:
models.CreateEdgeRequest:
properties:
id:
description: 边的唯一标识
example: edge_123
type: string
label:
description: 边的显示标签
example: 包含
type: string
properties:
additionalProperties: true
description: 自定义属性
type: object
source:
description: 源节点ID
example: node_1
type: string
target:
description: 目标节点ID
example: node_2
type: string
type:
description: 边的类型(可选,默认为关系类型)
example: CONTAINS
type: string
required:
- id
- label
- source
- target
type: object
models.CreateNodeRequest:
properties:
id:
description: 节点唯一标识
example: node_123
type: string
label:
description: 节点显示标签
example: 人工智能
type: string
properties:
additionalProperties: true
description: 自定义属性
type: object
type:
description: 节点类型
example: 概念
type: string
x:
description: X坐标(可选)
example: 100
type: number
"y":
description: Y坐标(可选)
example: 200
type: number
required:
- id
- label
- type
type: object
models.DeleteResponse:
properties:
id:
description: 被删除的实体ID(可选)
example: node_123
type: string
message:
description: 消息
example: 节点已成功删除
type: string
success:
description: 是否成功
example: true
type: boolean
type: object
models.Edge:
properties:
id:
@@ -19,6 +97,33 @@ definitions:
type:
type: string
type: object
models.EdgeResponse:
properties:
id:
description: 边的ID
example: edge_123
type: string
label:
description: 边的显示标签
example: 包含
type: string
properties:
additionalProperties: true
description: 自定义属性
type: object
source:
description: 源节点ID
example: node_1
type: string
target:
description: 目标节点ID
example: node_2
type: string
type:
description: 边的类型
example: CONTAINS
type: string
type: object
models.ErrorResponse:
properties:
error:
@@ -30,22 +135,22 @@ definitions:
properties:
edges:
items:
$ref: "#/definitions/models.Edge"
$ref: '#/definitions/models.Edge'
type: array
nodes:
items:
$ref: "#/definitions/models.Node"
$ref: '#/definitions/models.Node'
type: array
type: object
models.NeighborResponse:
properties:
edges:
items:
$ref: "#/definitions/models.Edge"
$ref: '#/definitions/models.Edge'
type: array
nodes:
items:
$ref: "#/definitions/models.Node"
$ref: '#/definitions/models.Node'
type: array
type: object
models.Node:
@@ -88,9 +193,32 @@ definitions:
type: integer
results:
items:
$ref: "#/definitions/models.Node"
$ref: '#/definitions/models.Node'
type: array
type: object
models.UpdateNodeRequest:
properties:
label:
description: 节点显示标签
example: 机器学习
type: string
properties:
additionalProperties: true
description: 自定义属性(更新)
type: object
type:
description: 节点类型
example: 工具
type: string
x:
description: X坐标
example: 150
type: number
"y":
description: Y坐标
example: 250
type: number
type: object
host: localhost:3001
info:
contact: {}
@@ -98,26 +226,87 @@ info:
title: 知识图谱 API
version: 1.0.0
paths:
/api/edges:
post:
consumes:
- application/json
description: 在知识图谱中创建一个新边(关系)
parameters:
- description: 边创建请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/models.CreateEdgeRequest'
produces:
- application/json
responses:
"200":
description: 创建成功
schema:
$ref: '#/definitions/models.EdgeResponse'
"400":
description: 请求错误
schema:
$ref: '#/definitions/models.ErrorResponse'
"404":
description: 源节点或目标节点未找到
schema:
$ref: '#/definitions/models.ErrorResponse'
"409":
description: 边已存在
schema:
$ref: '#/definitions/models.ErrorResponse'
"500":
description: 内部错误
schema:
$ref: '#/definitions/models.ErrorResponse'
summary: 创建边
/api/edges/{id}:
delete:
description: 从知识图谱中删除指定的边
parameters:
- description: 边ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: 删除成功
schema:
$ref: '#/definitions/models.DeleteResponse'
"404":
description: 边未找到
schema:
$ref: '#/definitions/models.ErrorResponse'
"500":
description: 内部错误
schema:
$ref: '#/definitions/models.ErrorResponse'
summary: 删除边
/api/graph:
get:
description: 获取知识图谱的全部节点和边数据
produces:
- application/json
- application/json
responses:
"200":
description: 成功
schema:
$ref: "#/definitions/models.GraphData"
$ref: '#/definitions/models.GraphData'
"500":
description: 内部错误
schema:
$ref: "#/definitions/models.ErrorResponse"
$ref: '#/definitions/models.ErrorResponse'
summary: 获取图数据
/api/graph/stats:
get:
description: 获取知识图谱的节点数、边数等统计信息
produces:
- application/json
- application/json
responses:
"200":
description: 成功
@@ -127,89 +316,181 @@ paths:
"500":
description: 内部错误
schema:
$ref: "#/definitions/models.ErrorResponse"
$ref: '#/definitions/models.ErrorResponse'
summary: 获取图统计信息
/api/nodes:
post:
consumes:
- application/json
description: 在知识图谱中创建一个新节点
parameters:
- description: 节点创建请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/models.CreateNodeRequest'
produces:
- application/json
responses:
"200":
description: 创建成功
schema:
$ref: '#/definitions/models.Node'
"400":
description: 请求错误
schema:
$ref: '#/definitions/models.ErrorResponse'
"409":
description: 节点已存在
schema:
$ref: '#/definitions/models.ErrorResponse'
"500":
description: 内部错误
schema:
$ref: '#/definitions/models.ErrorResponse'
summary: 创建节点
/api/nodes/{id}:
delete:
description: 从知识图谱中删除指定节点及其相关的所有边
parameters:
- description: 节点ID
in: path
name: id
required: true
type: string
produces:
- application/json
responses:
"200":
description: 删除成功
schema:
$ref: '#/definitions/models.DeleteResponse'
"404":
description: 节点未找到
schema:
$ref: '#/definitions/models.ErrorResponse'
"500":
description: 内部错误
schema:
$ref: '#/definitions/models.ErrorResponse'
summary: 删除节点
get:
description: 根据节点 ID 获取知识图谱中的节点详细信息
parameters:
- description: 节点 ID
in: path
name: id
required: true
type: string
- description: 节点 ID
in: path
name: id
required: true
type: string
produces:
- application/json
- application/json
responses:
"200":
description: 成功
schema:
$ref: "#/definitions/models.NodeResponse"
$ref: '#/definitions/models.NodeResponse'
"400":
description: 请求错误
schema:
$ref: "#/definitions/models.ErrorResponse"
$ref: '#/definitions/models.ErrorResponse'
"404":
description: 节点未找到
schema:
$ref: "#/definitions/models.ErrorResponse"
$ref: '#/definitions/models.ErrorResponse'
"500":
description: 内部错误
schema:
$ref: "#/definitions/models.ErrorResponse"
$ref: '#/definitions/models.ErrorResponse'
summary: 获取节点详情
put:
consumes:
- application/json
description: 更新知识图谱中指定节点的信息
parameters:
- description: 节点ID
in: path
name: id
required: true
type: string
- description: 节点更新请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/models.UpdateNodeRequest'
produces:
- application/json
responses:
"200":
description: 更新成功
schema:
$ref: '#/definitions/models.Node'
"400":
description: 请求错误
schema:
$ref: '#/definitions/models.ErrorResponse'
"404":
description: 节点未找到
schema:
$ref: '#/definitions/models.ErrorResponse'
"500":
description: 内部错误
schema:
$ref: '#/definitions/models.ErrorResponse'
summary: 更新节点
/api/nodes/{id}/neighbors:
get:
description: 根据节点 ID 获取其所有邻居节点及关联边
parameters:
- description: 节点 ID
in: path
name: id
required: true
type: string
- description: 节点 ID
in: path
name: id
required: true
type: string
produces:
- application/json
- application/json
responses:
"200":
description: 成功
schema:
$ref: "#/definitions/models.NeighborResponse"
$ref: '#/definitions/models.NeighborResponse'
"400":
description: 请求错误
schema:
$ref: "#/definitions/models.ErrorResponse"
$ref: '#/definitions/models.ErrorResponse'
"404":
description: 节点未找到
schema:
$ref: "#/definitions/models.ErrorResponse"
$ref: '#/definitions/models.ErrorResponse'
"500":
description: 内部错误
schema:
$ref: "#/definitions/models.ErrorResponse"
$ref: '#/definitions/models.ErrorResponse'
summary: 获取节点邻居
/api/search:
get:
description: 根据关键词搜索知识图谱中的节点
parameters:
- description: 搜索关键词
in: query
name: q
required: true
type: string
- description: 搜索关键词
in: query
name: q
required: true
type: string
produces:
- application/json
- application/json
responses:
"200":
description: 成功
schema:
$ref: "#/definitions/models.SearchResponse"
$ref: '#/definitions/models.SearchResponse'
"400":
description: 请求错误
schema:
$ref: "#/definitions/models.ErrorResponse"
$ref: '#/definitions/models.ErrorResponse'
"500":
description: 内部错误
schema:
$ref: "#/definitions/models.ErrorResponse"
$ref: '#/definitions/models.ErrorResponse'
summary: 搜索节点
swagger: "2.0"