feat(knext)graph client

This commit is contained in:
秉初 2024-11-25 21:12:24 +08:00
parent 624c1bed2a
commit 4dfe62812b
8 changed files with 319 additions and 50 deletions

View File

@ -17,6 +17,7 @@ import com.antgroup.openspg.server.common.model.base.BaseValObj;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
/**
* {@link EdgeTypeName EdgeTypeName} is the unique identifier of {@link EdgeType EdgeType}, and it
@ -25,15 +26,16 @@ import lombok.Getter;
*/
@Getter
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EdgeTypeName extends BaseValObj {
private final String startVertexType;
private String startVertexType;
/** The label of edge type */
private final String edgeLabel;
private String edgeLabel;
private final String endVertexType;
private String endVertexType;
public static EdgeTypeName parse(String edgeTypeName) {
String[] splits = edgeTypeName.split("_");

View File

@ -14,5 +14,5 @@ from knext.schema.rest.models import *
from knext.reasoner.rest.models import *
from knext.project.rest.models import *
from knext.search.rest.models import *
from knext.graph_algo.rest.models import *
from knext.graph.rest.models import *
from knext.thinker.rest.models import *

View File

@ -28,21 +28,24 @@ from __future__ import absolute_import
__version__ = "1.0.0"
# import apis into sdk package
from knext.graph_algo.rest.graph_api import GraphApi
from knext.graph.rest.graph_api import GraphApi
# import models into model package
from knext.graph_algo.rest.models.get_page_rank_scores_request import (
GetPageRankScoresRequest,
)
from knext.graph_algo.rest.models.get_page_rank_scores_request_start_nodes import (
GetPageRankScoresRequestStartNodes,
)
from knext.graph_algo.rest.models.page_rank_score_instance import PageRankScoreInstance
from knext.graph_algo.rest.models.delete_vertex_request import DeleteVertexRequest
from knext.graph_algo.rest.models.delete_edge_request import DeleteEdgeRequest
from knext.graph_algo.rest.models.edge_record_instance import EdgeRecordInstance
from knext.graph_algo.rest.models.upsert_vertex_request import UpsertVertexRequest
from knext.graph_algo.rest.models.upsert_edge_request import UpsertEdgeRequest
from knext.graph_algo.rest.models.vertex_record_instance import VertexRecordInstance
from knext.graph_algo.rest.models.writer_graph_request import WriterGraphRequest
from knext.graph.rest.models.get_page_rank_scores_request import GetPageRankScoresRequest
from knext.graph.rest.models.get_page_rank_scores_request_start_nodes import GetPageRankScoresRequestStartNodes
from knext.graph.rest.models.page_rank_score_instance import PageRankScoreInstance
from knext.graph.rest.models.delete_vertex_request import DeleteVertexRequest
from knext.graph.rest.models.delete_edge_request import DeleteEdgeRequest
from knext.graph.rest.models.edge_record_instance import EdgeRecordInstance
from knext.graph.rest.models.upsert_vertex_request import UpsertVertexRequest
from knext.graph.rest.models.upsert_edge_request import UpsertEdgeRequest
from knext.graph.rest.models.vertex_record_instance import VertexRecordInstance
from knext.graph.rest.models.writer_graph_request import WriterGraphRequest
from knext.graph.rest.models.edge_record import EdgeRecord
from knext.graph.rest.models.edge_type_name import EdgeTypeName
from knext.graph.rest.models.expend_one_hop_request import ExpendOneHopRequest
from knext.graph.rest.models.lpg_property_record import LpgPropertyRecord
from knext.graph.rest.models.query_vertex_request import QueryVertexRequest
from knext.graph.rest.models.vertex_record import VertexRecord
from knext.graph.rest.models.expend_one_hop_response import ExpendOneHopResponse

View File

@ -13,7 +13,8 @@ from typing import List, Dict
from knext.common.base.client import Client
from knext.common.rest import ApiClient, Configuration
from knext.graph import rest, GetPageRankScoresRequest, GetPageRankScoresRequestStartNodes, WriterGraphRequest
from knext.graph import (rest, GetPageRankScoresRequest, GetPageRankScoresRequestStartNodes, WriterGraphRequest,
QueryVertexRequest, ExpendOneHopRequest, EdgeTypeName)
class GraphClient(Client):
""" """
@ -61,11 +62,44 @@ class GraphClient(Client):
)
self._rest_client.graph_writer_graph_post(writer_graph_request=request)
def query_vertex(self, type_name: str, biz_id: str):
request = QueryVertexRequest(
project_id=self._project_id,
type_name=type_name,
biz_id=biz_id
)
return self._rest_client.graph_query_vertex_post(query_vertex_request=request)
def expend_one_hop(self, type_name: str, biz_id: str, edge_type_name_constraint: List[EdgeTypeName] = None):
request = ExpendOneHopRequest(
project_id=self._project_id,
type_name=type_name,
biz_id=biz_id,
edge_type_name_constraint=edge_type_name_constraint
)
return self._rest_client.graph_expend_one_hop_post(expend_one_hop_request=request)
if __name__ == "__main__":
'''
sc = GraphClient("http://127.0.0.1:8887", 4)
out = sc.calculate_pagerank_scores(
"Entity", [{"name": "Anxiety_and_nervousness", "type": "Entity"}]
)
for o in out:
print(o)
'''
#test ant main-site
client = GraphClient("https://spgservice-standard-pre.alipay.com", 644000146)
v = client.query_vertex("Antwork.EntityName", "千三")
#print(v)
edge_name = EdgeTypeName(start_vertex_type="BCTEST.DeleteDataEntity3",
edge_label="concept",
end_vertex_type="BCTEST.TestConcept")
client2 = GraphClient("https://spgservice-standard-pre.alipay.com", 363000133)
edge_type_name_constraint =[]
edge_type_name_constraint.append(edge_name)
g1 = client2.expend_one_hop("BCTEST.DeleteDataEntity3", "秉初测试", edge_type_name_constraint)
#g1 = client2.expend_one_hop("BCTEST.DeleteDataEntity3", "秉初测试", [edge_name])
print(g1)

View File

@ -28,21 +28,24 @@ from __future__ import absolute_import
__version__ = "1.0.0"
# import apis into sdk package
from knext.graph_algo.rest.graph_api import GraphApi
from knext.graph.rest.graph_api import GraphApi
# import models into model package
from knext.graph_algo.rest.models.get_page_rank_scores_request import (
GetPageRankScoresRequest,
)
from knext.graph_algo.rest.models.get_page_rank_scores_request_start_nodes import (
GetPageRankScoresRequestStartNodes,
)
from knext.graph_algo.rest.models.page_rank_score_instance import PageRankScoreInstance
from knext.graph_algo.rest.models.delete_vertex_request import DeleteVertexRequest
from knext.graph_algo.rest.models.delete_edge_request import DeleteEdgeRequest
from knext.graph_algo.rest.models.edge_record_instance import EdgeRecordInstance
from knext.graph_algo.rest.models.upsert_vertex_request import UpsertVertexRequest
from knext.graph_algo.rest.models.upsert_edge_request import UpsertEdgeRequest
from knext.graph_algo.rest.models.vertex_record_instance import VertexRecordInstance
from knext.graph_algo.rest.models.writer_graph_request import WriterGraphRequest
from knext.graph.rest.models.get_page_rank_scores_request import GetPageRankScoresRequest
from knext.graph.rest.models.get_page_rank_scores_request_start_nodes import GetPageRankScoresRequestStartNodes
from knext.graph.rest.models.page_rank_score_instance import PageRankScoreInstance
from knext.graph.rest.models.delete_vertex_request import DeleteVertexRequest
from knext.graph.rest.models.delete_edge_request import DeleteEdgeRequest
from knext.graph.rest.models.edge_record_instance import EdgeRecordInstance
from knext.graph.rest.models.upsert_vertex_request import UpsertVertexRequest
from knext.graph.rest.models.upsert_edge_request import UpsertEdgeRequest
from knext.graph.rest.models.vertex_record_instance import VertexRecordInstance
from knext.graph.rest.models.writer_graph_request import WriterGraphRequest
from knext.graph.rest.models.edge_record import EdgeRecord
from knext.graph.rest.models.edge_type_name import EdgeTypeName
from knext.graph.rest.models.expend_one_hop_request import ExpendOneHopRequest
from knext.graph.rest.models.lpg_property_record import LpgPropertyRecord
from knext.graph.rest.models.query_vertex_request import QueryVertexRequest
from knext.graph.rest.models.vertex_record import VertexRecord
from knext.graph.rest.models.expend_one_hop_response import ExpendOneHopResponse

View File

@ -753,3 +753,227 @@ class GraphApi(object):
_request_timeout=local_var_params.get("_request_timeout"),
collection_formats=collection_formats,
)
def graph_expend_one_hop_post(self, **kwargs): # noqa: E501
"""expend_one_hop # noqa: E501
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please pass async_req=True
>>> thread = api.graph_expend_one_hop_post(async_req=True)
>>> result = thread.get()
:param async_req bool: execute request asynchronously
:param ExpendOneHopRequest expend_one_hop_request:
:param _preload_content: if False, the urllib3.HTTPResponse object will
be returned without reading/decoding response
data. Default is True.
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:return: ExpendOneHopResponse
If the method is called asynchronously,
returns the request thread.
"""
kwargs['_return_http_data_only'] = True
return self.graph_expend_one_hop_post_with_http_info(**kwargs) # noqa: E501
def graph_expend_one_hop_post_with_http_info(self, **kwargs): # noqa: E501
"""expend_one_hop # noqa: E501
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please pass async_req=True
>>> thread = api.graph_expend_one_hop_post_with_http_info(async_req=True)
>>> result = thread.get()
:param async_req bool: execute request asynchronously
:param ExpendOneHopRequest expend_one_hop_request:
:param _return_http_data_only: response data without head status code
and headers
:param _preload_content: if False, the urllib3.HTTPResponse object will
be returned without reading/decoding response
data. Default is True.
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:return: tuple(ExpendOneHopResponse, status_code(int), headers(HTTPHeaderDict))
If the method is called asynchronously,
returns the request thread.
"""
local_var_params = locals()
all_params = [
'expend_one_hop_request'
]
all_params.extend(
[
'async_req',
'_return_http_data_only',
'_preload_content',
'_request_timeout'
]
)
for key, val in six.iteritems(local_var_params['kwargs']):
if key not in all_params:
raise ApiTypeError(
"Got an unexpected keyword argument '%s'"
" to method graph_expend_one_hop_post" % key
)
local_var_params[key] = val
del local_var_params['kwargs']
collection_formats = {}
path_params = {}
query_params = []
header_params = {}
form_params = []
local_var_files = {}
body_params = None
if 'expend_one_hop_request' in local_var_params:
body_params = local_var_params['expend_one_hop_request']
# HTTP header `Accept`
header_params['Accept'] = self.api_client.select_header_accept(
['application/json']) # noqa: E501
# HTTP header `Content-Type`
header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
['application/json']) # noqa: E501
# Authentication setting
auth_settings = [] # noqa: E501
return self.api_client.call_api(
'/graph/expendOneHop', 'POST',
path_params,
query_params,
header_params,
body=body_params,
post_params=form_params,
files=local_var_files,
response_type='ExpendOneHopResponse', # noqa: E501
auth_settings=auth_settings,
async_req=local_var_params.get('async_req'),
_return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
_preload_content=local_var_params.get('_preload_content', True),
_request_timeout=local_var_params.get('_request_timeout'),
collection_formats=collection_formats)
def graph_query_vertex_post(self, **kwargs): # noqa: E501
"""query_vertex # noqa: E501
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please pass async_req=True
>>> thread = api.graph_query_vertex_post(async_req=True)
>>> result = thread.get()
:param async_req bool: execute request asynchronously
:param QueryVertexRequest query_vertex_request:
:param _preload_content: if False, the urllib3.HTTPResponse object will
be returned without reading/decoding response
data. Default is True.
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:return: VertexRecord
If the method is called asynchronously,
returns the request thread.
"""
kwargs['_return_http_data_only'] = True
return self.graph_query_vertex_post_with_http_info(**kwargs) # noqa: E501
def graph_query_vertex_post_with_http_info(self, **kwargs): # noqa: E501
"""query_vertex # noqa: E501
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please pass async_req=True
>>> thread = api.graph_query_vertex_post_with_http_info(async_req=True)
>>> result = thread.get()
:param async_req bool: execute request asynchronously
:param QueryVertexRequest query_vertex_request:
:param _return_http_data_only: response data without head status code
and headers
:param _preload_content: if False, the urllib3.HTTPResponse object will
be returned without reading/decoding response
data. Default is True.
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
:return: tuple(VertexRecord, status_code(int), headers(HTTPHeaderDict))
If the method is called asynchronously,
returns the request thread.
"""
local_var_params = locals()
all_params = [
'query_vertex_request'
]
all_params.extend(
[
'async_req',
'_return_http_data_only',
'_preload_content',
'_request_timeout'
]
)
for key, val in six.iteritems(local_var_params['kwargs']):
if key not in all_params:
raise ApiTypeError(
"Got an unexpected keyword argument '%s'"
" to method graph_query_vertex_post" % key
)
local_var_params[key] = val
del local_var_params['kwargs']
collection_formats = {}
path_params = {}
query_params = []
header_params = {}
form_params = []
local_var_files = {}
body_params = None
if 'query_vertex_request' in local_var_params:
body_params = local_var_params['query_vertex_request']
# HTTP header `Accept`
header_params['Accept'] = self.api_client.select_header_accept(
['application/json']) # noqa: E501
# HTTP header `Content-Type`
header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501
['application/json']) # noqa: E501
# Authentication setting
auth_settings = [] # noqa: E501
return self.api_client.call_api(
'/graph/queryVertex', 'POST',
path_params,
query_params,
header_params,
body=body_params,
post_params=form_params,
files=local_var_files,
response_type='VertexRecord', # noqa: E501
auth_settings=auth_settings,
async_req=local_var_params.get('async_req'),
_return_http_data_only=local_var_params.get('_return_http_data_only'), # noqa: E501
_preload_content=local_var_params.get('_preload_content', True),
_request_timeout=local_var_params.get('_request_timeout'),
collection_formats=collection_formats)

View File

@ -16,17 +16,20 @@
from __future__ import absolute_import
# import models into model package
from knext.graph_algo.rest.models.get_page_rank_scores_request import (
GetPageRankScoresRequest,
)
from knext.graph_algo.rest.models.get_page_rank_scores_request_start_nodes import (
GetPageRankScoresRequestStartNodes,
)
from knext.graph_algo.rest.models.page_rank_score_instance import PageRankScoreInstance
from knext.graph_algo.rest.models.delete_vertex_request import DeleteVertexRequest
from knext.graph_algo.rest.models.delete_edge_request import DeleteEdgeRequest
from knext.graph_algo.rest.models.edge_record_instance import EdgeRecordInstance
from knext.graph_algo.rest.models.upsert_vertex_request import UpsertVertexRequest
from knext.graph_algo.rest.models.upsert_edge_request import UpsertEdgeRequest
from knext.graph_algo.rest.models.vertex_record_instance import VertexRecordInstance
from knext.graph_algo.rest.models.writer_graph_request import WriterGraphRequest
from knext.graph.rest.models.get_page_rank_scores_request import GetPageRankScoresRequest
from knext.graph.rest.models.get_page_rank_scores_request_start_nodes import GetPageRankScoresRequestStartNodes
from knext.graph.rest.models.page_rank_score_instance import PageRankScoreInstance
from knext.graph.rest.models.delete_vertex_request import DeleteVertexRequest
from knext.graph.rest.models.delete_edge_request import DeleteEdgeRequest
from knext.graph.rest.models.edge_record_instance import EdgeRecordInstance
from knext.graph.rest.models.upsert_vertex_request import UpsertVertexRequest
from knext.graph.rest.models.upsert_edge_request import UpsertEdgeRequest
from knext.graph.rest.models.vertex_record_instance import VertexRecordInstance
from knext.graph.rest.models.writer_graph_request import WriterGraphRequest
from knext.graph.rest.models.edge_record import EdgeRecord
from knext.graph.rest.models.edge_type_name import EdgeTypeName
from knext.graph.rest.models.expend_one_hop_request import ExpendOneHopRequest
from knext.graph.rest.models.lpg_property_record import LpgPropertyRecord
from knext.graph.rest.models.query_vertex_request import QueryVertexRequest
from knext.graph.rest.models.vertex_record import VertexRecord
from knext.graph.rest.models.expend_one_hop_response import ExpendOneHopResponse

View File

@ -13,6 +13,6 @@ rm -rf build
rm -rf dist
python setup.py sdist bdist_wheel
python3 setup.py sdist bdist_wheel
twine upload dist/*