From 37514d94f54012eabd57411823adeef9e26b9bdb Mon Sep 17 00:00:00 2001 From: royzhao Date: Tue, 5 Nov 2024 11:50:24 +0800 Subject: [PATCH] fix(thinker): support thinker server runner (#389) Co-authored-by: FishJoy --- lib/thinker-0.0.1.jar | Bin 104896 -> 137140 bytes .../knext/common/rest/models/__init__.py | 1 + python/knext/knext/thinker/client.py | 57 ++-- python/knext/knext/thinker/rest/__init__.py | 33 +++ .../knext/thinker/rest/models/__init__.py | 28 ++ .../rest/models/thinker_task_request.py | 277 ++++++++++++++++++ .../rest/models/thinker_task_response.py | 194 ++++++++++++ .../knext/knext/thinker/rest/thinker_api.py | 161 ++++++++++ .../local/thinker/LocalThinkerMain.java | 19 +- .../service/request/ThinkerTaskRequest.java | 25 ++ .../service/response/ThinkerTaskResponse.java | 23 ++ .../http/server/openapi/ReasonController.java | 16 + .../server/biz/service/ReasonerManager.java | 4 + .../biz/service/impl/ReasonerManagerImpl.java | 26 ++ .../common/model/reasoner/ThinkerTask.java | 27 ++ .../reasoner/service/ReasonerService.java | 5 + .../service/impl/ReasonerServiceImpl.java | 59 ++++ .../service/runner/ThinkerRunner.java | 57 ++++ 18 files changed, 980 insertions(+), 32 deletions(-) create mode 100644 python/knext/knext/thinker/rest/__init__.py create mode 100644 python/knext/knext/thinker/rest/models/__init__.py create mode 100644 python/knext/knext/thinker/rest/models/thinker_task_request.py create mode 100644 python/knext/knext/thinker/rest/models/thinker_task_response.py create mode 100644 python/knext/knext/thinker/rest/thinker_api.py create mode 100644 server/api/facade/src/main/java/com/antgroup/openspg/server/api/facade/dto/service/request/ThinkerTaskRequest.java create mode 100644 server/api/facade/src/main/java/com/antgroup/openspg/server/api/facade/dto/service/response/ThinkerTaskResponse.java create mode 100644 server/common/model/src/main/java/com/antgroup/openspg/server/common/model/reasoner/ThinkerTask.java create mode 100644 server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/runner/ThinkerRunner.java diff --git a/lib/thinker-0.0.1.jar b/lib/thinker-0.0.1.jar index 941a7dcbfaba854597a9651937651fa34bbe43ca..ce215d1f22b769b4b03f8fc7aec755fd2298a1ae 100644 GIT binary patch delta 116649 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 OkpTvV>lgqS=Kle^*m@}d delta 85393 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

Cre=P; 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 Su=NLo67mcTld6EpgaH5>!C=_{ diff --git a/python/knext/knext/common/rest/models/__init__.py b/python/knext/knext/common/rest/models/__init__.py index a5ff6756..616e15f0 100644 --- a/python/knext/knext/common/rest/models/__init__.py +++ b/python/knext/knext/common/rest/models/__init__.py @@ -15,3 +15,4 @@ 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.thinker.rest.models import * diff --git a/python/knext/knext/thinker/client.py b/python/knext/knext/thinker/client.py index 84541d77..d5f95a53 100644 --- a/python/knext/knext/thinker/client.py +++ b/python/knext/knext/thinker/client.py @@ -12,6 +12,9 @@ import os from knext.common.base.client import Client +from knext.common.rest import Configuration, ApiClient +from knext.thinker import rest +from knext.thinker.rest import ThinkerTaskRequest, ThinkerTaskResponse class ThinkerClient(Client): @@ -20,40 +23,32 @@ class ThinkerClient(Client): def __init__(self, host_addr: str = None, project_id: int = None): super().__init__(host_addr, project_id) + self._rest_client: rest.ThinkerApi = rest.ThinkerApi( + api_client=ApiClient(configuration=Configuration(host=host_addr)) + ) + def execute(self, subject="", predicate="", object="", mode="spo", params=""): """ Execute a synchronous builder job in local runner. """ + req: ThinkerTaskRequest = ThinkerTaskRequest( + project_id=self._project_id, + subject=subject, + predicate=predicate, + object=object, + mode=mode, + params=params, + ) + rep: ThinkerTaskResponse = self._rest_client.reason_thinker_post( + thinker_task_request=req + ) + print(rep) - import subprocess - from knext.reasoner import lib - from knext.common import env - jar_path = os.path.join(lib.__path__[0], lib.LOCAL_REASONER_JAR) - - java_cmd = [ - "java", - "-cp", - jar_path, - "com.antgroup.openspg.reasoner.runner.local.thinker.LocalThinkerMain", - "--projectId", - self._project_id, - "--subject", - subject or "", - "--predicate", - predicate or "", - "--object", - object or "", - "--mode", - mode, - "--params" or "", - params, - "--schemaUrl", - os.environ.get("KNEXT_HOST_ADDR") or env.LOCAL_SCHEMA_URL, - "--graphStateClass", - os.environ.get("KNEXT_GRAPH_STATE_CLASS") or lib.LOCAL_GRAPH_STATE_CLASS, - "--graphStoreUrl", - os.environ.get("KNEXT_GRAPH_STORE_URL") or lib.LOCAL_GRAPH_STORE_URL, - ] - - subprocess.call(java_cmd) +if __name__ == "__main__": + sc = ThinkerClient("http://127.0.0.1:8887", 2) + sc.execute( + subject="DiseaseLevel", + mode="node", + params='{"spg.reasoner.thinker.strict":·true,·"收缩压":150}', + ) diff --git a/python/knext/knext/thinker/rest/__init__.py b/python/knext/knext/thinker/rest/__init__.py new file mode 100644 index 00000000..913a32c7 --- /dev/null +++ b/python/knext/knext/thinker/rest/__init__.py @@ -0,0 +1,33 @@ +# coding: utf-8 +# Copyright 2023 OpenSPG Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software distributed under the License +# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +# or implied. + + +# flake8: noqa + +""" + knext + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 + + The version of the OpenAPI document: 1.0.0 + Generated by: https://openapi-generator.tech +""" + +from __future__ import absolute_import + +__version__ = "1" +# import models into sdk package +from knext.thinker.rest.models.thinker_task_request import ThinkerTaskRequest +from knext.thinker.rest.models.thinker_task_response import ThinkerTaskResponse + +# import apis into sdk package +from knext.thinker.rest.thinker_api import ThinkerApi diff --git a/python/knext/knext/thinker/rest/models/__init__.py b/python/knext/knext/thinker/rest/models/__init__.py new file mode 100644 index 00000000..0ec2d921 --- /dev/null +++ b/python/knext/knext/thinker/rest/models/__init__.py @@ -0,0 +1,28 @@ +# coding: utf-8 +# Copyright 2023 OpenSPG Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software distributed under the License +# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +# or implied. + +# flake8: noqa +""" + knext + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 + + The version of the OpenAPI document: 1.0.0 + Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +# import models into model package +from knext.thinker.rest.models.thinker_task_request import ThinkerTaskRequest +from knext.thinker.rest.models.thinker_task_response import ThinkerTaskResponse diff --git a/python/knext/knext/thinker/rest/models/thinker_task_request.py b/python/knext/knext/thinker/rest/models/thinker_task_request.py new file mode 100644 index 00000000..cfdd3051 --- /dev/null +++ b/python/knext/knext/thinker/rest/models/thinker_task_request.py @@ -0,0 +1,277 @@ +# coding: utf-8 +# Copyright 2023 OpenSPG Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software distributed under the License +# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +# or implied. + + +""" + knext + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 + + The version of the OpenAPI document: 1.0.0 + Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +import six + +from knext.common.rest.configuration import Configuration + + +class ThinkerTaskRequest(object): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = { + "project_id": "int", + "subject": "str", + "predicate": "str", + "object": "str", + "mode": "str", + "params": "str", + } + + attribute_map = { + "project_id": "projectId", + "subject": "subject", + "predicate": "predicate", + "object": "object", + "mode": "mode", + "params": "params", + } + + def __init__( + self, + project_id=None, + subject=None, + predicate=None, + object=None, + mode=None, + params=None, + local_vars_configuration=None, + ): # noqa: E501 + """ThinkerTaskRequest - a model defined in OpenAPI""" # noqa: E501 + if local_vars_configuration is None: + local_vars_configuration = Configuration() + self.local_vars_configuration = local_vars_configuration + + self._project_id = None + self._subject = None + self._predicate = None + self._object = None + self._mode = None + self._params = None + self.discriminator = None + + self.project_id = project_id + if subject is not None: + self.subject = subject + if predicate is not None: + self.predicate = predicate + if object is not None: + self.object = object + if mode is not None: + self.mode = mode + if params is not None: + self.params = params + + @property + def project_id(self): + """Gets the project_id of this ThinkerTaskRequest. # noqa: E501 + + + :return: The project_id of this ThinkerTaskRequest. # noqa: E501 + :rtype: int + """ + return self._project_id + + @project_id.setter + def project_id(self, project_id): + """Sets the project_id of this ThinkerTaskRequest. + + + :param project_id: The project_id of this ThinkerTaskRequest. # noqa: E501 + :type: int + """ + if ( + self.local_vars_configuration.client_side_validation and project_id is None + ): # noqa: E501 + raise ValueError( + "Invalid value for `project_id`, must not be `None`" + ) # noqa: E501 + + self._project_id = project_id + + @property + def subject(self): + """Gets the subject of this ThinkerTaskRequest. # noqa: E501 + + + :return: The subject of this ThinkerTaskRequest. # noqa: E501 + :rtype: str + """ + return self._subject + + @subject.setter + def subject(self, subject): + """Sets the subject of this ThinkerTaskRequest. + + + :param subject: The subject of this ThinkerTaskRequest. # noqa: E501 + :type: str + """ + + self._subject = subject + + @property + def predicate(self): + """Gets the predicate of this ThinkerTaskRequest. # noqa: E501 + + + :return: The predicate of this ThinkerTaskRequest. # noqa: E501 + :rtype: str + """ + return self._predicate + + @predicate.setter + def predicate(self, predicate): + """Sets the predicate of this ThinkerTaskRequest. + + + :param predicate: The predicate of this ThinkerTaskRequest. # noqa: E501 + :type: str + """ + + self._predicate = predicate + + @property + def object(self): + """Gets the object of this ThinkerTaskRequest. # noqa: E501 + + + :return: The object of this ThinkerTaskRequest. # noqa: E501 + :rtype: str + """ + return self._object + + @object.setter + def object(self, object): + """Sets the object of this ThinkerTaskRequest. + + + :param object: The object of this ThinkerTaskRequest. # noqa: E501 + :type: str + """ + + self._object = object + + @property + def mode(self): + """Gets the mode of this ThinkerTaskRequest. # noqa: E501 + + + :return: The mode of this ThinkerTaskRequest. # noqa: E501 + :rtype: str + """ + return self._mode + + @mode.setter + def mode(self, mode): + """Sets the mode of this ThinkerTaskRequest. + + + :param mode: The mode of this ThinkerTaskRequest. # noqa: E501 + :type: str + """ + + self._mode = mode + + @property + def params(self): + """Gets the params of this ThinkerTaskRequest. # noqa: E501 + + + :return: The params of this ThinkerTaskRequest. # noqa: E501 + :rtype: str + """ + return self._params + + @params.setter + def params(self, params): + """Sets the params of this ThinkerTaskRequest. + + + :param params: The params of this ThinkerTaskRequest. # noqa: E501 + :type: str + """ + + self._params = params + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.openapi_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list( + map(lambda x: x.to_dict() if hasattr(x, "to_dict") else x, value) + ) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict( + map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") + else item, + value.items(), + ) + ) + else: + result[attr] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, ThinkerTaskRequest): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, ThinkerTaskRequest): + return True + + return self.to_dict() != other.to_dict() diff --git a/python/knext/knext/thinker/rest/models/thinker_task_response.py b/python/knext/knext/thinker/rest/models/thinker_task_response.py new file mode 100644 index 00000000..744b2aa9 --- /dev/null +++ b/python/knext/knext/thinker/rest/models/thinker_task_response.py @@ -0,0 +1,194 @@ +# coding: utf-8 +# Copyright 2023 OpenSPG Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software distributed under the License +# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +# or implied. + + +""" + knext + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 + + The version of the OpenAPI document: 1.0.0 + Generated by: https://openapi-generator.tech +""" + + +import pprint +import re # noqa: F401 + +import six + +from knext.common.rest.configuration import Configuration + + +class ThinkerTaskResponse(object): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + """ + Attributes: + openapi_types (dict): The key is attribute name + and the value is attribute type. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + """ + openapi_types = {"project_id": "int", "task_id": "str", "result": "list[object]"} + + attribute_map = {"project_id": "projectId", "task_id": "taskId", "result": "result"} + + def __init__( + self, project_id=None, task_id=None, result=None, local_vars_configuration=None + ): # noqa: E501 + """ThinkerTaskResponse - a model defined in OpenAPI""" # noqa: E501 + if local_vars_configuration is None: + local_vars_configuration = Configuration() + self.local_vars_configuration = local_vars_configuration + + self._project_id = None + self._task_id = None + self._result = None + self.discriminator = None + + self.project_id = project_id + self.task_id = task_id + self.result = result + + @property + def project_id(self): + """Gets the project_id of this ThinkerTaskResponse. # noqa: E501 + + + :return: The project_id of this ThinkerTaskResponse. # noqa: E501 + :rtype: int + """ + return self._project_id + + @project_id.setter + def project_id(self, project_id): + """Sets the project_id of this ThinkerTaskResponse. + + + :param project_id: The project_id of this ThinkerTaskResponse. # noqa: E501 + :type: int + """ + if ( + self.local_vars_configuration.client_side_validation and project_id is None + ): # noqa: E501 + raise ValueError( + "Invalid value for `project_id`, must not be `None`" + ) # noqa: E501 + + self._project_id = project_id + + @property + def task_id(self): + """Gets the task_id of this ThinkerTaskResponse. # noqa: E501 + + + :return: The task_id of this ThinkerTaskResponse. # noqa: E501 + :rtype: str + """ + return self._task_id + + @task_id.setter + def task_id(self, task_id): + """Sets the task_id of this ThinkerTaskResponse. + + + :param task_id: The task_id of this ThinkerTaskResponse. # noqa: E501 + :type: str + """ + if ( + self.local_vars_configuration.client_side_validation and task_id is None + ): # noqa: E501 + raise ValueError( + "Invalid value for `task_id`, must not be `None`" + ) # noqa: E501 + + self._task_id = task_id + + @property + def result(self): + """Gets the result of this ThinkerTaskResponse. # noqa: E501 + + + :return: The result of this ThinkerTaskResponse. # noqa: E501 + :rtype: list[object] + """ + return self._result + + @result.setter + def result(self, result): + """Sets the result of this ThinkerTaskResponse. + + + :param result: The result of this ThinkerTaskResponse. # noqa: E501 + :type: list[object] + """ + if ( + self.local_vars_configuration.client_side_validation and result is None + ): # noqa: E501 + raise ValueError( + "Invalid value for `result`, must not be `None`" + ) # noqa: E501 + + self._result = result + + def to_dict(self): + """Returns the model properties as a dict""" + result = {} + + for attr, _ in six.iteritems(self.openapi_types): + value = getattr(self, attr) + if isinstance(value, list): + result[attr] = list( + map(lambda x: x.to_dict() if hasattr(x, "to_dict") else x, value) + ) + elif hasattr(value, "to_dict"): + result[attr] = value.to_dict() + elif isinstance(value, dict): + result[attr] = dict( + map( + lambda item: (item[0], item[1].to_dict()) + if hasattr(item[1], "to_dict") + else item, + value.items(), + ) + ) + else: + result[attr] = value + + return result + + def to_str(self): + """Returns the string representation of the model""" + return pprint.pformat(self.to_dict()) + + def __repr__(self): + """For `print` and `pprint`""" + return self.to_str() + + def __eq__(self, other): + """Returns true if both objects are equal""" + if not isinstance(other, ThinkerTaskResponse): + return False + + return self.to_dict() == other.to_dict() + + def __ne__(self, other): + """Returns true if both objects are not equal""" + if not isinstance(other, ThinkerTaskResponse): + return True + + return self.to_dict() != other.to_dict() diff --git a/python/knext/knext/thinker/rest/thinker_api.py b/python/knext/knext/thinker/rest/thinker_api.py new file mode 100644 index 00000000..d5b2782a --- /dev/null +++ b/python/knext/knext/thinker/rest/thinker_api.py @@ -0,0 +1,161 @@ +# coding: utf-8 +# Copyright 2023 OpenSPG Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except +# in compliance with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software distributed under the License +# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +# or implied. +""" + knext + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 + + The version of the OpenAPI document: 1.0.0 + Generated by: https://openapi-generator.tech +""" + + +from __future__ import absolute_import + +import re # noqa: F401 + +# python 2 and python 3 compatibility library +import six + +from knext.common.rest.api_client import ApiClient +from knext.common.rest.exceptions import ApiTypeError, ApiValueError # noqa: F401 + + +class ThinkerApi(object): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient() + self.api_client = api_client + + def reason_thinker_post(self, **kwargs): # noqa: E501 + """thinker # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.reason_thinker_post(async_req=True) + >>> result = thread.get() + + :param async_req bool: execute request asynchronously + :param ThinkerTaskRequest thinker_task_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: ThinkerTaskResponse + If the method is called asynchronously, + returns the request thread. + """ + kwargs["_return_http_data_only"] = True + return self.reason_thinker_post_with_http_info(**kwargs) # noqa: E501 + + def reason_thinker_post_with_http_info(self, **kwargs): # noqa: E501 + """thinker # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.reason_thinker_post_with_http_info(async_req=True) + >>> result = thread.get() + + :param async_req bool: execute request asynchronously + :param ThinkerTaskRequest thinker_task_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(ThinkerTaskResponse, status_code(int), headers(HTTPHeaderDict)) + If the method is called asynchronously, + returns the request thread. + """ + + local_var_params = locals() + + all_params = ["thinker_task_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 reason_thinker_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 "thinker_task_request" in local_var_params: + body_params = local_var_params["thinker_task_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( + "/reason/thinker", + "POST", + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=local_var_files, + response_type="ThinkerTaskResponse", # 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, + ) diff --git a/reasoner/runner/local-runner/src/main/java/com/antgroup/openspg/reasoner/runner/local/thinker/LocalThinkerMain.java b/reasoner/runner/local-runner/src/main/java/com/antgroup/openspg/reasoner/runner/local/thinker/LocalThinkerMain.java index 14d75e49..bb97f35a 100644 --- a/reasoner/runner/local-runner/src/main/java/com/antgroup/openspg/reasoner/runner/local/thinker/LocalThinkerMain.java +++ b/reasoner/runner/local-runner/src/main/java/com/antgroup/openspg/reasoner/runner/local/thinker/LocalThinkerMain.java @@ -145,7 +145,7 @@ public class LocalThinkerMain { return task; } - private static Element strToElement(String content, Boolean isPredicate) { + public static Element strToElement(String content, Boolean isPredicate) { String[] parts = StringUtils.split(content, ","); if (parts.length == 2) { return new Entity(parts[0], parts[1]); @@ -193,6 +193,23 @@ public class LocalThinkerMain { return options; } + public static GraphState loadGraph(String graphStateClass, String graphStoreUrl) { + GraphState graphState; + if (StringUtils.isNotEmpty(graphStateClass)) { + try { + graphState = + (GraphState) + Class.forName(graphStateClass) + .getConstructor(String.class) + .newInstance(graphStoreUrl); + } catch (Exception e) { + throw new RuntimeException("can not create graph state from " + graphStateClass, e); + } + return graphState; + } + return null; + } + protected static GraphState loadGraph(ThinkerParams params) { GraphState graphState; String graphStateClass = params.getGraphStateClassName(); diff --git a/server/api/facade/src/main/java/com/antgroup/openspg/server/api/facade/dto/service/request/ThinkerTaskRequest.java b/server/api/facade/src/main/java/com/antgroup/openspg/server/api/facade/dto/service/request/ThinkerTaskRequest.java new file mode 100644 index 00000000..dffd77b4 --- /dev/null +++ b/server/api/facade/src/main/java/com/antgroup/openspg/server/api/facade/dto/service/request/ThinkerTaskRequest.java @@ -0,0 +1,25 @@ +/* + * Copyright 2023 OpenSPG Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. + */ +package com.antgroup.openspg.server.api.facade.dto.service.request; + +import lombok.Data; + +@Data +public class ThinkerTaskRequest { + private Long projectId; + private String subject; + private String predicate; + private String object; + private String mode; + private String params; +} diff --git a/server/api/facade/src/main/java/com/antgroup/openspg/server/api/facade/dto/service/response/ThinkerTaskResponse.java b/server/api/facade/src/main/java/com/antgroup/openspg/server/api/facade/dto/service/response/ThinkerTaskResponse.java new file mode 100644 index 00000000..62ac36e3 --- /dev/null +++ b/server/api/facade/src/main/java/com/antgroup/openspg/server/api/facade/dto/service/response/ThinkerTaskResponse.java @@ -0,0 +1,23 @@ +/* + * Copyright 2023 OpenSPG Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. + */ +package com.antgroup.openspg.server.api.facade.dto.service.response; + +import java.util.List; +import lombok.Data; + +@Data +public class ThinkerTaskResponse { + private List result; + private String taskId; + private Long projectId; +} diff --git a/server/api/http-server/src/main/java/com/antgroup/openspg/server/api/http/server/openapi/ReasonController.java b/server/api/http-server/src/main/java/com/antgroup/openspg/server/api/http/server/openapi/ReasonController.java index 58b0d196..5c2cbb11 100644 --- a/server/api/http-server/src/main/java/com/antgroup/openspg/server/api/http/server/openapi/ReasonController.java +++ b/server/api/http-server/src/main/java/com/antgroup/openspg/server/api/http/server/openapi/ReasonController.java @@ -15,7 +15,9 @@ package com.antgroup.openspg.server.api.http.server.openapi; import com.antgroup.openspg.core.schema.model.type.ProjectSchema; import com.antgroup.openspg.server.api.facade.dto.service.request.ReasonerTaskRequest; +import com.antgroup.openspg.server.api.facade.dto.service.request.ThinkerTaskRequest; import com.antgroup.openspg.server.api.facade.dto.service.response.ReasonerTaskResponse; +import com.antgroup.openspg.server.api.facade.dto.service.response.ThinkerTaskResponse; import com.antgroup.openspg.server.api.http.server.BaseController; import com.antgroup.openspg.server.api.http.server.HttpBizCallback; import com.antgroup.openspg.server.api.http.server.HttpBizTemplate; @@ -48,6 +50,20 @@ public class ReasonController extends BaseController { }); } + @RequestMapping(method = RequestMethod.POST, value = "/thinker") + public ResponseEntity reason(@RequestBody ThinkerTaskRequest request) { + return HttpBizTemplate.execute( + new HttpBizCallback() { + @Override + public void check() {} + + @Override + public ThinkerTaskResponse action() { + return reasonerManager.thinker(request); + } + }); + } + @RequestMapping(method = RequestMethod.GET, value = "/schema") public ResponseEntity getReasonSchema(@RequestParam Long projectId) { return HttpBizTemplate.execute( diff --git a/server/biz/service/src/main/java/com/antgroup/openspg/server/biz/service/ReasonerManager.java b/server/biz/service/src/main/java/com/antgroup/openspg/server/biz/service/ReasonerManager.java index f3089ccc..551a43c4 100644 --- a/server/biz/service/src/main/java/com/antgroup/openspg/server/biz/service/ReasonerManager.java +++ b/server/biz/service/src/main/java/com/antgroup/openspg/server/biz/service/ReasonerManager.java @@ -14,9 +14,13 @@ package com.antgroup.openspg.server.biz.service; import com.antgroup.openspg.core.schema.model.type.ProjectSchema; import com.antgroup.openspg.server.api.facade.dto.service.request.ReasonerTaskRequest; +import com.antgroup.openspg.server.api.facade.dto.service.request.ThinkerTaskRequest; import com.antgroup.openspg.server.api.facade.dto.service.response.ReasonerTaskResponse; +import com.antgroup.openspg.server.api.facade.dto.service.response.ThinkerTaskResponse; public interface ReasonerManager { + ThinkerTaskResponse thinker(ThinkerTaskRequest request); + ReasonerTaskResponse reason(ReasonerTaskRequest request); ProjectSchema getReasonSchema(Long projectId); diff --git a/server/biz/service/src/main/java/com/antgroup/openspg/server/biz/service/impl/ReasonerManagerImpl.java b/server/biz/service/src/main/java/com/antgroup/openspg/server/biz/service/impl/ReasonerManagerImpl.java index 05e38971..b0d71226 100644 --- a/server/biz/service/src/main/java/com/antgroup/openspg/server/biz/service/impl/ReasonerManagerImpl.java +++ b/server/biz/service/src/main/java/com/antgroup/openspg/server/biz/service/impl/ReasonerManagerImpl.java @@ -12,14 +12,20 @@ */ package com.antgroup.openspg.server.biz.service.impl; +import com.antgroup.kg.reasoner.thinker.logic.Result; import com.antgroup.openspg.core.schema.model.type.ProjectSchema; import com.antgroup.openspg.server.api.facade.dto.service.request.ReasonerTaskRequest; +import com.antgroup.openspg.server.api.facade.dto.service.request.ThinkerTaskRequest; import com.antgroup.openspg.server.api.facade.dto.service.response.ReasonerTaskResponse; +import com.antgroup.openspg.server.api.facade.dto.service.response.ThinkerTaskResponse; import com.antgroup.openspg.server.biz.common.ProjectManager; import com.antgroup.openspg.server.biz.service.ReasonerManager; import com.antgroup.openspg.server.common.model.reasoner.ReasonerTask; +import com.antgroup.openspg.server.common.model.reasoner.ThinkerTask; import com.antgroup.openspg.server.core.reasoner.service.CatalogService; import com.antgroup.openspg.server.core.reasoner.service.ReasonerService; +import java.util.ArrayList; +import java.util.List; import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -30,6 +36,26 @@ public class ReasonerManagerImpl implements ReasonerManager { @Autowired private ReasonerService reasonerService; @Autowired private CatalogService catalogService; + @Override + public ThinkerTaskResponse thinker(ThinkerTaskRequest request) { + ThinkerTask task = new ThinkerTask(); + task.setTaskId(UUID.randomUUID().toString()); + task.setMode(request.getMode()); + task.setObject(request.getObject()); + task.setPredicate(request.getPredicate()); + task.setSubject(request.getSubject()); + task.setProjectId(request.getProjectId()); + task.setParams(request.getParams()); + String graphStoreUrl = getGraphStoreUrl(request.getProjectId()); + task.setGraphStoreUrl(graphStoreUrl); + List res = reasonerService.thinker(task); + ThinkerTaskResponse response = new ThinkerTaskResponse(); + response.setProjectId(request.getProjectId()); + response.setTaskId(task.getTaskId()); + response.setResult(new ArrayList<>(res)); + return response; + } + @Override public ReasonerTaskResponse reason(ReasonerTaskRequest request) { String graphStoreUrl = getGraphStoreUrl(request.getProjectId()); diff --git a/server/common/model/src/main/java/com/antgroup/openspg/server/common/model/reasoner/ThinkerTask.java b/server/common/model/src/main/java/com/antgroup/openspg/server/common/model/reasoner/ThinkerTask.java new file mode 100644 index 00000000..522b983d --- /dev/null +++ b/server/common/model/src/main/java/com/antgroup/openspg/server/common/model/reasoner/ThinkerTask.java @@ -0,0 +1,27 @@ +/* + * Copyright 2023 OpenSPG Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. + */ +package com.antgroup.openspg.server.common.model.reasoner; + +import lombok.Data; + +@Data +public class ThinkerTask { + private String taskId; + private Long projectId; + private String subject; + private String predicate; + private String object; + private String mode; + private String params; + private String graphStoreUrl; +} diff --git a/server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/ReasonerService.java b/server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/ReasonerService.java index 23c5e834..74df4255 100644 --- a/server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/ReasonerService.java +++ b/server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/ReasonerService.java @@ -12,8 +12,13 @@ */ package com.antgroup.openspg.server.core.reasoner.service; +import com.antgroup.kg.reasoner.thinker.logic.Result; import com.antgroup.openspg.server.common.model.reasoner.ReasonerTask; +import com.antgroup.openspg.server.common.model.reasoner.ThinkerTask; +import java.util.List; public interface ReasonerService { ReasonerTask runTask(ReasonerTask request); + + List thinker(ThinkerTask request); } diff --git a/server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/impl/ReasonerServiceImpl.java b/server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/impl/ReasonerServiceImpl.java index 74e88277..9884cddd 100644 --- a/server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/impl/ReasonerServiceImpl.java +++ b/server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/impl/ReasonerServiceImpl.java @@ -13,17 +13,29 @@ package com.antgroup.openspg.server.core.reasoner.service.impl; import com.alibaba.fastjson.JSON; +import com.antgroup.kg.reasoner.thinker.logic.Result; +import com.antgroup.kg.reasoner.thinker.logic.graph.Element; +import com.antgroup.kg.reasoner.thinker.logic.graph.Triple; +import com.antgroup.openspg.reasoner.catalog.impl.KgSchemaConnectionInfo; import com.antgroup.openspg.reasoner.lube.catalog.Catalog; +import com.antgroup.openspg.reasoner.runner.local.thinker.LocalThinkerMain; +import com.antgroup.openspg.reasoner.runner.local.thinker.ThinkerParams; import com.antgroup.openspg.reasoner.udf.impl.UdfMngImpl; import com.antgroup.openspg.server.common.model.reasoner.ReasonerTask; import com.antgroup.openspg.server.common.model.reasoner.StatusEnum; +import com.antgroup.openspg.server.common.model.reasoner.ThinkerTask; import com.antgroup.openspg.server.common.service.config.AppEnvConfig; import com.antgroup.openspg.server.core.reasoner.service.CatalogService; import com.antgroup.openspg.server.core.reasoner.service.ReasonerService; import com.antgroup.openspg.server.core.reasoner.service.runner.ReasonerRunner; +import com.antgroup.openspg.server.core.reasoner.service.runner.ThinkerRunner; import com.google.common.collect.Lists; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import javax.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -65,4 +77,51 @@ public class ReasonerServiceImpl implements ReasonerService { } return request; } + + @Override + public List thinker(ThinkerTask request) { + Element s = Element.ANY; + Element p = Element.ANY; + Element o = Element.ANY; + String mode = "spo"; + + String subject = request.getSubject(); + if (StringUtils.isNotBlank(subject)) { + s = LocalThinkerMain.strToElement(subject, false); + } + String predicate = request.getPredicate(); + if (StringUtils.isNotBlank(predicate)) { + p = LocalThinkerMain.strToElement(predicate, true); + } + String object = request.getObject(); + if (StringUtils.isNotBlank(object)) { + o = LocalThinkerMain.strToElement(object, false); + } + if (s == Element.ANY && p == Element.ANY && o == Element.ANY) { + throw new RuntimeException( + "subject, predicate, object cannot all be empty at the same time."); + } + + String m = request.getMode(); + if (StringUtils.isNotBlank(m)) { + mode = m; + } + + ThinkerParams task = new ThinkerParams(); + task.setTriple(new Triple(s, p, o)); + + task.setConnInfo(new KgSchemaConnectionInfo(appEnvConfig.getSchemaUri(), "")); + task.setGraphStateInitString(request.getGraphStoreUrl()); + task.setProjectId(request.getProjectId()); + + Map params = new HashMap<>(3); + if (StringUtils.isNotEmpty(request.getParams())) { + params = new HashMap<>(JSON.parseObject(request.getParams())); + } + task.setParams(params); + task.setMode(mode); + + ThinkerRunner thinkerRunner = new ThinkerRunner(task); + return thinkerRunner.run(); + } } diff --git a/server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/runner/ThinkerRunner.java b/server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/runner/ThinkerRunner.java new file mode 100644 index 00000000..c701f736 --- /dev/null +++ b/server/core/reasoner/service/src/main/java/com/antgroup/openspg/server/core/reasoner/service/runner/ThinkerRunner.java @@ -0,0 +1,57 @@ +/* + * Copyright 2023 OpenSPG Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. + */ + +package com.antgroup.openspg.server.core.reasoner.service.runner; + +import com.antgroup.kg.reasoner.thinker.Thinker; +import com.antgroup.kg.reasoner.thinker.catalog.LogicCatalog; +import com.antgroup.kg.reasoner.thinker.engine.DefaultThinker; +import com.antgroup.kg.reasoner.thinker.logic.Result; +import com.antgroup.kg.reasoner.thinker.logic.graph.Node; +import com.antgroup.openspg.reasoner.runner.local.thinker.LocalThinkerMain; +import com.antgroup.openspg.reasoner.runner.local.thinker.OpenSPGLogicCatalog; +import com.antgroup.openspg.reasoner.runner.local.thinker.ThinkerParams; +import java.util.List; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class ThinkerRunner { + private final ThinkerParams task; + private final String graphStateClass = + "com.antgroup.openspg.reasoner.warehouse.cloudext.CloudExtGraphState"; + + public ThinkerRunner(ThinkerParams task) { + this.task = task; + } + + public List run() { + LogicCatalog logicCatalog = new OpenSPGLogicCatalog(task.getProjectId(), task.getConnInfo()); + logicCatalog.init(); + Thinker thinker = + new DefaultThinker( + LocalThinkerMain.loadGraph(graphStateClass, task.getGraphStateInitString()), + logicCatalog); + List result; + if (task.getMode().toLowerCase().equals("spo")) { + result = + thinker.find( + task.getTriple().getSubject(), + task.getTriple().getPredicate(), + task.getTriple().getObject(), + task.getParams()); + } else { + result = thinker.find((Node) task.getTriple().getObject(), task.getParams()); + } + return result; + } +}