naas-abi 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- naas_abi/__init__.py +35 -0
- naas_abi/agents/AbiAgent.py +442 -0
- naas_abi/agents/AbiAgent_test.py +157 -0
- naas_abi/agents/EntitytoSPARQLAgent.py +952 -0
- naas_abi/agents/EntitytoSPARQLAgent_test.py +66 -0
- naas_abi/agents/KnowledgeGraphBuilderAgent.py +321 -0
- naas_abi/agents/KnowledgeGraphBuilderAgent_test.py +86 -0
- naas_abi/agents/OntologyEngineerAgent.py +115 -0
- naas_abi/agents/OntologyEngineerAgent_test.py +42 -0
- naas_abi/apps/oxigraph_admin/main.py +392 -0
- naas_abi/apps/oxigraph_admin/terminal_style.py +151 -0
- naas_abi/apps/sparql_terminal/main.py +68 -0
- naas_abi/apps/sparql_terminal/terminal_style.py +236 -0
- naas_abi/apps/terminal_agent/main.py +553 -0
- naas_abi/apps/terminal_agent/terminal_style.py +175 -0
- naas_abi/cli.py +714 -0
- naas_abi/mappings.py +83 -0
- naas_abi/models/airgap_gemma.py +220 -0
- naas_abi/models/airgap_qwen.py +24 -0
- naas_abi/models/default.py +23 -0
- naas_abi/models/gpt_4_1.py +25 -0
- naas_abi/pipelines/AIAgentOntologyGenerationPipeline.py +635 -0
- naas_abi/pipelines/AIAgentOntologyGenerationPipeline_test.py +133 -0
- naas_abi/pipelines/AddIndividualPipeline.py +215 -0
- naas_abi/pipelines/AddIndividualPipeline_test.py +66 -0
- naas_abi/pipelines/InsertDataSPARQLPipeline.py +197 -0
- naas_abi/pipelines/InsertDataSPARQLPipeline_test.py +96 -0
- naas_abi/pipelines/MergeIndividualsPipeline.py +245 -0
- naas_abi/pipelines/MergeIndividualsPipeline_test.py +98 -0
- naas_abi/pipelines/RemoveIndividualPipeline.py +166 -0
- naas_abi/pipelines/RemoveIndividualPipeline_test.py +58 -0
- naas_abi/pipelines/UpdateCommercialOrganizationPipeline.py +198 -0
- naas_abi/pipelines/UpdateDataPropertyPipeline.py +175 -0
- naas_abi/pipelines/UpdateLegalNamePipeline.py +107 -0
- naas_abi/pipelines/UpdateLinkedInPagePipeline.py +179 -0
- naas_abi/pipelines/UpdatePersonPipeline.py +184 -0
- naas_abi/pipelines/UpdateSkillPipeline.py +118 -0
- naas_abi/pipelines/UpdateTickerPipeline.py +104 -0
- naas_abi/pipelines/UpdateWebsitePipeline.py +106 -0
- naas_abi/triggers.py +131 -0
- naas_abi/workflows/AgentRecommendationWorkflow.py +321 -0
- naas_abi/workflows/AgentRecommendationWorkflow_test.py +160 -0
- naas_abi/workflows/ArtificialAnalysisWorkflow.py +337 -0
- naas_abi/workflows/ArtificialAnalysisWorkflow_test.py +57 -0
- naas_abi/workflows/ConvertOntologyGraphToYamlWorkflow.py +210 -0
- naas_abi/workflows/ConvertOntologyGraphToYamlWorkflow_test.py +78 -0
- naas_abi/workflows/CreateClassOntologyYamlWorkflow.py +208 -0
- naas_abi/workflows/CreateClassOntologyYamlWorkflow_test.py +65 -0
- naas_abi/workflows/CreateIndividualOntologyYamlWorkflow.py +183 -0
- naas_abi/workflows/CreateIndividualOntologyYamlWorkflow_test.py +86 -0
- naas_abi/workflows/ExportGraphInstancesToExcelWorkflow.py +450 -0
- naas_abi/workflows/ExportGraphInstancesToExcelWorkflow_test.py +33 -0
- naas_abi/workflows/GetObjectPropertiesFromClassWorkflow.py +385 -0
- naas_abi/workflows/GetObjectPropertiesFromClassWorkflow_test.py +57 -0
- naas_abi/workflows/GetSubjectGraphWorkflow.py +84 -0
- naas_abi/workflows/GetSubjectGraphWorkflow_test.py +71 -0
- naas_abi/workflows/SearchIndividualWorkflow.py +190 -0
- naas_abi/workflows/SearchIndividualWorkflow_test.py +98 -0
- naas_abi-1.0.0.dist-info/METADATA +9 -0
- naas_abi-1.0.0.dist-info/RECORD +62 -0
- naas_abi-1.0.0.dist-info/WHEEL +5 -0
- naas_abi-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from enum import Enum
|
|
3
|
+
from typing import Annotated, Optional
|
|
4
|
+
|
|
5
|
+
from fastapi import APIRouter
|
|
6
|
+
from langchain_core.tools import BaseTool, StructuredTool
|
|
7
|
+
from naas_abi_core.services.triple_store.TripleStorePorts import ITripleStoreService
|
|
8
|
+
from naas_abi_core.utils.String import normalize
|
|
9
|
+
from naas_abi_core.workflow import Workflow, WorkflowConfiguration
|
|
10
|
+
from naas_abi_core.workflow.workflow import WorkflowParameters
|
|
11
|
+
from pydantic import Field
|
|
12
|
+
from rdflib import query
|
|
13
|
+
from thefuzz import fuzz # type: ignore
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@dataclass
|
|
17
|
+
class SearchIndividualWorkflowConfiguration(WorkflowConfiguration):
|
|
18
|
+
"""Configuration for SearchIndividual workflow."""
|
|
19
|
+
|
|
20
|
+
triple_store: ITripleStoreService
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class SearchIndividualWorkflowParameters(WorkflowParameters):
|
|
24
|
+
"""Parameters for SearchIndividual workflow."""
|
|
25
|
+
|
|
26
|
+
search_label: Annotated[
|
|
27
|
+
str,
|
|
28
|
+
Field(
|
|
29
|
+
...,
|
|
30
|
+
description="Individual label to search for in the ontology schema.",
|
|
31
|
+
example="Naas.ai",
|
|
32
|
+
),
|
|
33
|
+
]
|
|
34
|
+
class_uri: Optional[
|
|
35
|
+
Annotated[
|
|
36
|
+
str,
|
|
37
|
+
Field(
|
|
38
|
+
...,
|
|
39
|
+
description="Class URI to use to search for individuals.",
|
|
40
|
+
example="https://www.commoncoreontologies.org/ont00000443",
|
|
41
|
+
),
|
|
42
|
+
]
|
|
43
|
+
] = None
|
|
44
|
+
limit: Optional[
|
|
45
|
+
Annotated[
|
|
46
|
+
int,
|
|
47
|
+
Field(
|
|
48
|
+
description="Maximum number of results to return.",
|
|
49
|
+
ge=1,
|
|
50
|
+
le=100,
|
|
51
|
+
),
|
|
52
|
+
]
|
|
53
|
+
] = 10
|
|
54
|
+
query: Optional[
|
|
55
|
+
Annotated[
|
|
56
|
+
str,
|
|
57
|
+
Field(
|
|
58
|
+
description="Custom SPARQL query to use to search for individuals.",
|
|
59
|
+
),
|
|
60
|
+
]
|
|
61
|
+
] = None
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
class SearchIndividualWorkflow(Workflow):
|
|
65
|
+
"""Workflow for searching ontology individuals."""
|
|
66
|
+
|
|
67
|
+
__configuration: SearchIndividualWorkflowConfiguration
|
|
68
|
+
|
|
69
|
+
def __init__(self, configuration: SearchIndividualWorkflowConfiguration):
|
|
70
|
+
super().__init__(configuration)
|
|
71
|
+
self.__configuration = configuration
|
|
72
|
+
|
|
73
|
+
def search_individual(
|
|
74
|
+
self, parameters: SearchIndividualWorkflowParameters
|
|
75
|
+
) -> dict | list[dict]:
|
|
76
|
+
class_uri_filter = (
|
|
77
|
+
f"?individual_uri a <{parameters.class_uri}> ;"
|
|
78
|
+
if parameters.class_uri
|
|
79
|
+
else ""
|
|
80
|
+
)
|
|
81
|
+
search_label_norm = normalize(parameters.search_label)
|
|
82
|
+
sparql_query = f"""
|
|
83
|
+
SELECT DISTINCT ?individual_uri ?label
|
|
84
|
+
WHERE {{
|
|
85
|
+
# Ensure individual is a NamedIndividual
|
|
86
|
+
?individual_uri a owl:NamedIndividual .
|
|
87
|
+
|
|
88
|
+
{class_uri_filter}
|
|
89
|
+
|
|
90
|
+
{{
|
|
91
|
+
# Search by rdfs:label
|
|
92
|
+
?individual_uri rdfs:label ?label .
|
|
93
|
+
|
|
94
|
+
# Convert labels to lowercase for comparison
|
|
95
|
+
BIND(LCASE(STR(?label)) AS ?lower_label)
|
|
96
|
+
BIND(LCASE("{parameters.search_label}") AS ?lower_search)
|
|
97
|
+
|
|
98
|
+
# Split search label into words and check if any word matches
|
|
99
|
+
{{
|
|
100
|
+
# Full label match
|
|
101
|
+
FILTER(CONTAINS(?lower_label, ?lower_search) || CONTAINS(?lower_search, ?lower_label))
|
|
102
|
+
}}
|
|
103
|
+
UNION
|
|
104
|
+
{{
|
|
105
|
+
# Word-by-word match
|
|
106
|
+
VALUES ?search_word {{ {" ".join([f'"{word.lower()}"' for word in parameters.search_label.split()])} }}
|
|
107
|
+
FILTER(CONTAINS(?lower_label, ?search_word))
|
|
108
|
+
}}
|
|
109
|
+
}}
|
|
110
|
+
UNION
|
|
111
|
+
{{
|
|
112
|
+
# Search by skos:altLabel
|
|
113
|
+
?individual_uri skos:altLabel ?label .
|
|
114
|
+
|
|
115
|
+
# Convert labels to lowercase for comparison
|
|
116
|
+
BIND(LCASE(STR(?label)) AS ?lower_label)
|
|
117
|
+
BIND(LCASE("{search_label_norm}") AS ?lower_search)
|
|
118
|
+
|
|
119
|
+
# Split search label into words and check if any word matches
|
|
120
|
+
{{
|
|
121
|
+
# Full label match
|
|
122
|
+
FILTER(CONTAINS(?lower_label, ?lower_search) || CONTAINS(?lower_search, ?lower_label))
|
|
123
|
+
}}
|
|
124
|
+
UNION
|
|
125
|
+
{{
|
|
126
|
+
# Word-by-word match
|
|
127
|
+
VALUES ?search_word {{ {" ".join([f'"{word.lower()}"' for word in search_label_norm.split()])} }}
|
|
128
|
+
FILTER(CONTAINS(?lower_label, ?search_word))
|
|
129
|
+
}}
|
|
130
|
+
}}
|
|
131
|
+
}}
|
|
132
|
+
ORDER BY ?label
|
|
133
|
+
LIMIT {parameters.limit}
|
|
134
|
+
"""
|
|
135
|
+
if parameters.query is not None:
|
|
136
|
+
sparql_query = parameters.query
|
|
137
|
+
results = self.__configuration.triple_store.query(sparql_query)
|
|
138
|
+
|
|
139
|
+
# Process results with fuzzy matching
|
|
140
|
+
data = []
|
|
141
|
+
for row in results:
|
|
142
|
+
assert isinstance(row, query.ResultRow)
|
|
143
|
+
data_dict = {}
|
|
144
|
+
for key in row.labels:
|
|
145
|
+
data_dict[key] = str(row[key]) if row[key] else None
|
|
146
|
+
if key == "label" and row[key]:
|
|
147
|
+
score = fuzz.token_set_ratio(
|
|
148
|
+
search_label_norm, normalize(str(row[key]))
|
|
149
|
+
)
|
|
150
|
+
data_dict["score"] = score
|
|
151
|
+
data.append(data_dict)
|
|
152
|
+
|
|
153
|
+
# Sort by best match and remove duplicates
|
|
154
|
+
if len(data) > 0:
|
|
155
|
+
data.sort(
|
|
156
|
+
key=lambda x: x["score"] if x["score"] is not None else 0, reverse=True
|
|
157
|
+
)
|
|
158
|
+
seen = set()
|
|
159
|
+
unique_data = []
|
|
160
|
+
for x in data:
|
|
161
|
+
if x["individual_uri"] not in seen:
|
|
162
|
+
seen.add(x["individual_uri"])
|
|
163
|
+
unique_data.append(x)
|
|
164
|
+
data = unique_data
|
|
165
|
+
return data
|
|
166
|
+
|
|
167
|
+
def as_tools(self) -> list[BaseTool]:
|
|
168
|
+
return [
|
|
169
|
+
StructuredTool(
|
|
170
|
+
name="search_individual",
|
|
171
|
+
description="Search an ontology individual based on its label. It will return the most relevant individual using matching with rdfs:label",
|
|
172
|
+
func=lambda **kwargs: self.search_individual(
|
|
173
|
+
SearchIndividualWorkflowParameters(**kwargs)
|
|
174
|
+
),
|
|
175
|
+
args_schema=SearchIndividualWorkflowParameters,
|
|
176
|
+
)
|
|
177
|
+
]
|
|
178
|
+
|
|
179
|
+
def as_api(
|
|
180
|
+
self,
|
|
181
|
+
router: APIRouter,
|
|
182
|
+
route_name: str = "",
|
|
183
|
+
name: str = "",
|
|
184
|
+
description: str = "",
|
|
185
|
+
description_stream: str = "",
|
|
186
|
+
tags: list[str | Enum] | None = None,
|
|
187
|
+
) -> None:
|
|
188
|
+
if tags is None:
|
|
189
|
+
tags = []
|
|
190
|
+
return None
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from naas_abi.workflows.SearchIndividualWorkflow import (
|
|
3
|
+
SearchIndividualWorkflow,
|
|
4
|
+
SearchIndividualWorkflowConfiguration,
|
|
5
|
+
SearchIndividualWorkflowParameters,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@pytest.fixture
|
|
10
|
+
def search_individual_workflow() -> SearchIndividualWorkflow:
|
|
11
|
+
from naas_abi import services
|
|
12
|
+
|
|
13
|
+
# Configurations
|
|
14
|
+
search_individual_workflow_configuration = SearchIndividualWorkflowConfiguration(
|
|
15
|
+
triple_store=services.triple_store_service
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
# Workflow
|
|
19
|
+
search_individual_workflow = SearchIndividualWorkflow(
|
|
20
|
+
configuration=search_individual_workflow_configuration
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
return search_individual_workflow
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def test_search_individual_workflow(
|
|
27
|
+
search_individual_workflow: SearchIndividualWorkflow,
|
|
28
|
+
):
|
|
29
|
+
from uuid import uuid4
|
|
30
|
+
|
|
31
|
+
from naas_abi import services
|
|
32
|
+
from naas_abi_core.utils.Graph import TEST
|
|
33
|
+
from rdflib import OWL, RDFS, Graph, Literal, URIRef
|
|
34
|
+
|
|
35
|
+
graph = Graph()
|
|
36
|
+
node_id = str(uuid4())
|
|
37
|
+
graph.add(
|
|
38
|
+
(
|
|
39
|
+
TEST[node_id],
|
|
40
|
+
URIRef("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
|
|
41
|
+
URIRef("https://www.commoncoreontologies.org/ont00000443"),
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
graph.add(
|
|
45
|
+
(
|
|
46
|
+
TEST[node_id],
|
|
47
|
+
URIRef("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
|
|
48
|
+
OWL.NamedIndividual,
|
|
49
|
+
)
|
|
50
|
+
)
|
|
51
|
+
graph.add((TEST[node_id], RDFS.label, Literal(node_id)))
|
|
52
|
+
|
|
53
|
+
services.triple_store_service.insert(graph)
|
|
54
|
+
|
|
55
|
+
# Test
|
|
56
|
+
result = search_individual_workflow.search_individual(
|
|
57
|
+
SearchIndividualWorkflowParameters(
|
|
58
|
+
search_label=node_id,
|
|
59
|
+
class_uri="https://www.commoncoreontologies.org/ont00000443",
|
|
60
|
+
limit=10,
|
|
61
|
+
query=None,
|
|
62
|
+
)
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
assert isinstance(result, list), result
|
|
66
|
+
assert len(result) == 1, result
|
|
67
|
+
assert result[0]["label"] == node_id, result[0]
|
|
68
|
+
|
|
69
|
+
services.triple_store_service.remove(graph)
|
|
70
|
+
|
|
71
|
+
# Test
|
|
72
|
+
result = search_individual_workflow.search_individual(
|
|
73
|
+
SearchIndividualWorkflowParameters(
|
|
74
|
+
search_label=node_id,
|
|
75
|
+
class_uri="https://www.commoncoreontologies.org/ont00000443",
|
|
76
|
+
limit=10,
|
|
77
|
+
query=None,
|
|
78
|
+
)
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
assert len(result) == 0, result
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def test_search_unexisting_individual(
|
|
85
|
+
search_individual_workflow: SearchIndividualWorkflow,
|
|
86
|
+
):
|
|
87
|
+
# Test
|
|
88
|
+
result = search_individual_workflow.search_individual(
|
|
89
|
+
SearchIndividualWorkflowParameters(
|
|
90
|
+
search_label="kndfggkljkdfjgldfklgdkfgdfg_does_not_exist",
|
|
91
|
+
class_uri="https://www.commoncoreontologies.org/ont00000443",
|
|
92
|
+
limit=10,
|
|
93
|
+
query=None,
|
|
94
|
+
)
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
assert isinstance(result, list), result
|
|
98
|
+
assert len(result) == 0, result
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: naas-abi
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Add your description here
|
|
5
|
+
Author-email: Maxime Jublou <maxime@naas.ai>, Florent Ravenel <florent@naas.ai>, Jeremy Ravenel <jeremy@naas.ai>
|
|
6
|
+
Requires-Python: <4,>=3.10
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Requires-Dist: naas-abi-core>=1.0.0-dev.1
|
|
9
|
+
Requires-Dist: naas-abi-marketplace>=1.0.0-dev.1
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
naas_abi/__init__.py,sha256=xOa5ED-cLAdFrosaPUJGPT3ThluEfx-0hWSmKzfzcmM,1193
|
|
2
|
+
naas_abi/cli.py,sha256=bfCcxGoQ_iSMhQDDX0-dRCyhc53Nawsy3WAruCNCL7M,27549
|
|
3
|
+
naas_abi/mappings.py,sha256=qu17k8cPwPNKRIqchDMnxViDx0Kn0MTy2XT8XYUIW34,4872
|
|
4
|
+
naas_abi/triggers.py,sha256=ljkgZP2zsTlmkK02ivTPW-yV02pn2TdyRk5CP4kUtvo,4658
|
|
5
|
+
naas_abi/agents/AbiAgent.py,sha256=xbpjtsGIqIOMrg5jL8acpKRCAE2Ik_us5sr8ttbnQRk,18071
|
|
6
|
+
naas_abi/agents/AbiAgent_test.py,sha256=AKggG5RS3zDWnql1DFE7cF7riAHeOdKTZp44WN65Arg,5906
|
|
7
|
+
naas_abi/agents/EntitytoSPARQLAgent.py,sha256=Muf4L2A4B8vV4JKYkj_P0p-5u1XyWIHfWY9S-dmxHmg,57095
|
|
8
|
+
naas_abi/agents/EntitytoSPARQLAgent_test.py,sha256=kx0gkbJoQZqt2_f_RINajwQU5EnHR1PsQx53rh7wJvA,2267
|
|
9
|
+
naas_abi/agents/KnowledgeGraphBuilderAgent.py,sha256=dx0_2VzVsLRi3cRiA0eqmVr-O7qbBrrC5ykW9nbW4_A,13022
|
|
10
|
+
naas_abi/agents/KnowledgeGraphBuilderAgent_test.py,sha256=pKgakywjYCkjEngbaG-D9q9gwNMQEgXeD1C2xb9irTo,2718
|
|
11
|
+
naas_abi/agents/OntologyEngineerAgent.py,sha256=QZRQPRoXfgoT3qqH0U6wM8_o3Zn1KLv0CtYiQkHtC1M,4571
|
|
12
|
+
naas_abi/agents/OntologyEngineerAgent_test.py,sha256=Z5A9u-GKPMlaaUQmI5Yvm9N9mwZTOuyyrqIyrSwrCEI,1319
|
|
13
|
+
naas_abi/apps/oxigraph_admin/main.py,sha256=PHrzl4KOKWMZRLg32SEbEHIhPUj3Uf-Ccqj3072OFYc,13970
|
|
14
|
+
naas_abi/apps/oxigraph_admin/terminal_style.py,sha256=ByiWVYM5Ju8iGMKbs1YwfEwLfLIpaQbB5nPHzb9zdUY,5152
|
|
15
|
+
naas_abi/apps/sparql_terminal/main.py,sha256=v2TD5qFBGlPGajceGdBTTT8QM0f4v-knF-uIKOGLr_c,1824
|
|
16
|
+
naas_abi/apps/sparql_terminal/terminal_style.py,sha256=TYBM2ChnOLSgVw3TA33obBSc_5gAC5kJCuD2dqMOmF4,6560
|
|
17
|
+
naas_abi/apps/terminal_agent/main.py,sha256=7MN88mivIV7gP1lELnqNxP_huwTbavhnTjkNmC9NMw8,19425
|
|
18
|
+
naas_abi/apps/terminal_agent/terminal_style.py,sha256=YOpfvBlKU52wNyGEKbZPiRQVKxug-hI92H8ScV5L8Ew,5254
|
|
19
|
+
naas_abi/models/airgap_gemma.py,sha256=I9pWN_DSgy4h6rT7OiYWDVijyTMoEgONm4xfZYWvp6I,8469
|
|
20
|
+
naas_abi/models/airgap_qwen.py,sha256=EQZ-0tAKZCTCqnovLiGCx4ss0yh2Jjk0xh7wCwDomG8,682
|
|
21
|
+
naas_abi/models/default.py,sha256=Ylj0GzyUDXjmuU0a2V759128bIVmvs-YXGc7o7oJSEQ,648
|
|
22
|
+
naas_abi/models/gpt_4_1.py,sha256=OhwRr49VULUYxatj0cvM5g4mUkaOnl9qb9XK6AuLIiQ,818
|
|
23
|
+
naas_abi/pipelines/AIAgentOntologyGenerationPipeline.py,sha256=ou-0FWBPFc5zkG3q_H3ri9_6AEm9JFDH3r4t5ThpxeU,24621
|
|
24
|
+
naas_abi/pipelines/AIAgentOntologyGenerationPipeline_test.py,sha256=lDsuZKfQlCtLNKQ09nkSHemsvjSNdeZAhaDw-cPYbjo,4130
|
|
25
|
+
naas_abi/pipelines/AddIndividualPipeline.py,sha256=KdrE4eY6Toh9pcJorhZUQ122zt2G5R0ewl9f97A4SVI,8426
|
|
26
|
+
naas_abi/pipelines/AddIndividualPipeline_test.py,sha256=TXCdMdCZCy6Ap1Ar3GCQvQqtIHdEjcECegFCXxbJZeU,2275
|
|
27
|
+
naas_abi/pipelines/InsertDataSPARQLPipeline.py,sha256=EcYRAr9ZIA-bWnKj9vclbgsN9uzXkACXzcJdH5HNl4k,6779
|
|
28
|
+
naas_abi/pipelines/InsertDataSPARQLPipeline_test.py,sha256=XW_CEJfbg-Azi0Y9JjFfEN6ar30a8b2yHSmn0N1oe2A,3245
|
|
29
|
+
naas_abi/pipelines/MergeIndividualsPipeline.py,sha256=6Z644v2OU47jFpfKj6uH6DK0hlbdMTjoR477Iy5dF04,9187
|
|
30
|
+
naas_abi/pipelines/MergeIndividualsPipeline_test.py,sha256=c3QVeXRkEOxZfIPPDQdEpI_9v95R1rXPH8EUWlYtPqk,2990
|
|
31
|
+
naas_abi/pipelines/RemoveIndividualPipeline.py,sha256=aU6ZRWisVQNPVkIwCaJ5BbthyOR5ZW5NGxnUr-Q_QYk,5514
|
|
32
|
+
naas_abi/pipelines/RemoveIndividualPipeline_test.py,sha256=e5kgfT44bFl5wvgr3hSs1mu2tEq1xEyTIiF3KosKiNk,1697
|
|
33
|
+
naas_abi/pipelines/UpdateCommercialOrganizationPipeline.py,sha256=JLuRbVa7Ic6FafEnDL8IoDf6rZqeVTJjRKHPipv_uBU,6749
|
|
34
|
+
naas_abi/pipelines/UpdateDataPropertyPipeline.py,sha256=wtF5akFg6OpOakK4kCjfXhrc3fQkUYNDJuQVei8-qvM,6704
|
|
35
|
+
naas_abi/pipelines/UpdateLegalNamePipeline.py,sha256=5gWMJ8_Uf39g-rhhHb6xBF4g7CTkZH9lrs6HEz5mdEA,3432
|
|
36
|
+
naas_abi/pipelines/UpdateLinkedInPagePipeline.py,sha256=Amb-PH1JIB83axd2Gv_auQHWJmhE1JUBgPv0HOEcOdQ,6161
|
|
37
|
+
naas_abi/pipelines/UpdatePersonPipeline.py,sha256=rycR5IhI7ZP0-YkCflaZLhWX6yzrM2Pd8aYWuhrUxYQ,6244
|
|
38
|
+
naas_abi/pipelines/UpdateSkillPipeline.py,sha256=mv-rnxD_tcZEvJrskRbzIjoIe_Guo1-illcIUeO6YM0,3888
|
|
39
|
+
naas_abi/pipelines/UpdateTickerPipeline.py,sha256=xRnZHKibyJCgsDXGzEsWCHCIWllnecZANSKkjJI87jA,3378
|
|
40
|
+
naas_abi/pipelines/UpdateWebsitePipeline.py,sha256=LboGip58H8dE04jCNAF8jygt21CtmKua-xDwDa1B_Fw,3537
|
|
41
|
+
naas_abi/workflows/AgentRecommendationWorkflow.py,sha256=QSAKib22LiWQQIbuwblQk8AE0b0WAX_huJLJeSC6KdE,12974
|
|
42
|
+
naas_abi/workflows/AgentRecommendationWorkflow_test.py,sha256=9LaYrn3qNbPtKFOBxxL9o6pFKZ3aSxlU3IkKmvh2ok8,5205
|
|
43
|
+
naas_abi/workflows/ArtificialAnalysisWorkflow.py,sha256=tieCFk-JIKbyVLlbdPDFIZLouO58B9ECVGIklgx8KV0,12114
|
|
44
|
+
naas_abi/workflows/ArtificialAnalysisWorkflow_test.py,sha256=glb0WJa19EpyuTqg7SCDkSI5oo_7UCTiDSeHdpaDDUY,1928
|
|
45
|
+
naas_abi/workflows/ConvertOntologyGraphToYamlWorkflow.py,sha256=T5AlTAVDgtoi8joLr9XDVuedEibzKV2E3j7Rss3hreM,7800
|
|
46
|
+
naas_abi/workflows/ConvertOntologyGraphToYamlWorkflow_test.py,sha256=mwKtMzXPe5Iv19n5-XbiIk45IdOuLvHLeTUqSiTyEKY,2467
|
|
47
|
+
naas_abi/workflows/CreateClassOntologyYamlWorkflow.py,sha256=H8znWADOAzlU_0RZCfsmnGH2sFJn8gkIM3p__PIRWqo,7747
|
|
48
|
+
naas_abi/workflows/CreateClassOntologyYamlWorkflow_test.py,sha256=ql_cYfFBFod3sCKEXU0AR_oHtvd5Ykb0OG-tWhYorfk,2091
|
|
49
|
+
naas_abi/workflows/CreateIndividualOntologyYamlWorkflow.py,sha256=kgJ_G4C4VUYfxW1oeDN1rzEYCvujsd_ENil1A3zLjgM,6814
|
|
50
|
+
naas_abi/workflows/CreateIndividualOntologyYamlWorkflow_test.py,sha256=IM5nuTuEG2iYQMCkXBxxNQ0N2I7ua_aWpIVUmIfsELI,2791
|
|
51
|
+
naas_abi/workflows/ExportGraphInstancesToExcelWorkflow.py,sha256=tgSZDqX70QeM7kam4JAK-C2MAQX-qQ8JP-97XafAaPY,19439
|
|
52
|
+
naas_abi/workflows/ExportGraphInstancesToExcelWorkflow_test.py,sha256=N9QKd7lX7N_Q16DAJLQkzKcT07eGJ9zpmiYUXU21OLc,1170
|
|
53
|
+
naas_abi/workflows/GetObjectPropertiesFromClassWorkflow.py,sha256=8Hcqm3bqj-KLjxTFIfGf9Ku9c6U0d2A9VdQpY0RS9FE,14505
|
|
54
|
+
naas_abi/workflows/GetObjectPropertiesFromClassWorkflow_test.py,sha256=GUcIU9m_qwUqRXq8HwQrVW520PGNwq2N5nsNnUbbAkU,1965
|
|
55
|
+
naas_abi/workflows/GetSubjectGraphWorkflow.py,sha256=sKNddfFrk1VNvogcoVxv_Bk-LKlw6XFe5Tgwk3HvH3U,2825
|
|
56
|
+
naas_abi/workflows/GetSubjectGraphWorkflow_test.py,sha256=fzzFYUwojM39x5Ld-59jHMDbGy4Lcq6uO8_BAvZV0ug,1886
|
|
57
|
+
naas_abi/workflows/SearchIndividualWorkflow.py,sha256=d0JasMTP7AEOyvEnZr1KHgagkBo9Tugi2gsk_m6g0E4,6553
|
|
58
|
+
naas_abi/workflows/SearchIndividualWorkflow_test.py,sha256=KBhd58TATMSWWdThYPg7veAySR4hts5LuoygQqQIiaU,2749
|
|
59
|
+
naas_abi-1.0.0.dist-info/METADATA,sha256=yKXsj05nPs1AK97s_fMSmm4pXPURBS2eh8bT4eMtCc8,358
|
|
60
|
+
naas_abi-1.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
61
|
+
naas_abi-1.0.0.dist-info/top_level.txt,sha256=Dhf3mhATB9-JuvBR8Y55OabvI-PCeQUqb5ae3EMmbeA,9
|
|
62
|
+
naas_abi-1.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
naas_abi
|