naas-abi-core 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_core/__init__.py +1 -0
- naas_abi_core/apps/api/api.py +242 -0
- naas_abi_core/apps/api/api_test.py +281 -0
- naas_abi_core/apps/api/openapi_doc.py +307 -0
- naas_abi_core/apps/mcp/mcp_server.py +243 -0
- naas_abi_core/apps/mcp/mcp_server_test.py +163 -0
- naas_abi_core/apps/terminal_agent/main.py +555 -0
- naas_abi_core/apps/terminal_agent/terminal_style.py +175 -0
- naas_abi_core/cli/__init__.py +53 -0
- naas_abi_core/cli/agent.py +30 -0
- naas_abi_core/cli/chat.py +26 -0
- naas_abi_core/cli/config.py +49 -0
- naas_abi_core/cli/init.py +13 -0
- naas_abi_core/cli/module.py +28 -0
- naas_abi_core/cli/new.py +13 -0
- naas_abi_core/cli/secret.py +79 -0
- naas_abi_core/engine/Engine.py +87 -0
- naas_abi_core/engine/EngineProxy.py +109 -0
- naas_abi_core/engine/Engine_test.py +6 -0
- naas_abi_core/engine/IEngine.py +91 -0
- naas_abi_core/engine/conftest.py +45 -0
- naas_abi_core/engine/engine_configuration/EngineConfiguration.py +160 -0
- naas_abi_core/engine/engine_configuration/EngineConfiguration_GenericLoader.py +49 -0
- naas_abi_core/engine/engine_configuration/EngineConfiguration_ObjectStorageService.py +131 -0
- naas_abi_core/engine/engine_configuration/EngineConfiguration_ObjectStorageService_test.py +26 -0
- naas_abi_core/engine/engine_configuration/EngineConfiguration_SecretService.py +116 -0
- naas_abi_core/engine/engine_configuration/EngineConfiguration_TripleStoreService.py +171 -0
- naas_abi_core/engine/engine_configuration/EngineConfiguration_VectorStoreService.py +65 -0
- naas_abi_core/engine/engine_configuration/EngineConfiguration_test.py +9 -0
- naas_abi_core/engine/engine_configuration/utils/PydanticModelValidator.py +15 -0
- naas_abi_core/engine/engine_loaders/EngineModuleLoader.py +302 -0
- naas_abi_core/engine/engine_loaders/EngineOntologyLoader.py +16 -0
- naas_abi_core/engine/engine_loaders/EngineServiceLoader.py +47 -0
- naas_abi_core/integration/__init__.py +7 -0
- naas_abi_core/integration/integration.py +28 -0
- naas_abi_core/models/Model.py +198 -0
- naas_abi_core/models/OpenRouter.py +15 -0
- naas_abi_core/models/OpenRouter_test.py +36 -0
- naas_abi_core/module/Module.py +245 -0
- naas_abi_core/module/ModuleAgentLoader.py +49 -0
- naas_abi_core/module/ModuleUtils.py +20 -0
- naas_abi_core/modules/templatablesparqlquery/README.md +196 -0
- naas_abi_core/modules/templatablesparqlquery/__init__.py +39 -0
- naas_abi_core/modules/templatablesparqlquery/ontologies/TemplatableSparqlQueryOntology.ttl +116 -0
- naas_abi_core/modules/templatablesparqlquery/workflows/GenericWorkflow.py +48 -0
- naas_abi_core/modules/templatablesparqlquery/workflows/TemplatableSparqlQueryLoader.py +192 -0
- naas_abi_core/pipeline/__init__.py +6 -0
- naas_abi_core/pipeline/pipeline.py +70 -0
- naas_abi_core/services/__init__.py +0 -0
- naas_abi_core/services/agent/Agent.py +1619 -0
- naas_abi_core/services/agent/AgentMemory_test.py +28 -0
- naas_abi_core/services/agent/Agent_test.py +214 -0
- naas_abi_core/services/agent/IntentAgent.py +1171 -0
- naas_abi_core/services/agent/IntentAgent_test.py +139 -0
- naas_abi_core/services/agent/beta/Embeddings.py +180 -0
- naas_abi_core/services/agent/beta/IntentMapper.py +119 -0
- naas_abi_core/services/agent/beta/LocalModel.py +88 -0
- naas_abi_core/services/agent/beta/VectorStore.py +89 -0
- naas_abi_core/services/agent/test_agent_memory.py +278 -0
- naas_abi_core/services/agent/test_postgres_integration.py +145 -0
- naas_abi_core/services/cache/CacheFactory.py +31 -0
- naas_abi_core/services/cache/CachePort.py +63 -0
- naas_abi_core/services/cache/CacheService.py +246 -0
- naas_abi_core/services/cache/CacheService_test.py +85 -0
- naas_abi_core/services/cache/adapters/secondary/CacheFSAdapter.py +39 -0
- naas_abi_core/services/object_storage/ObjectStorageFactory.py +57 -0
- naas_abi_core/services/object_storage/ObjectStoragePort.py +47 -0
- naas_abi_core/services/object_storage/ObjectStorageService.py +41 -0
- naas_abi_core/services/object_storage/adapters/secondary/ObjectStorageSecondaryAdapterFS.py +52 -0
- naas_abi_core/services/object_storage/adapters/secondary/ObjectStorageSecondaryAdapterNaas.py +131 -0
- naas_abi_core/services/object_storage/adapters/secondary/ObjectStorageSecondaryAdapterS3.py +171 -0
- naas_abi_core/services/ontology/OntologyPorts.py +36 -0
- naas_abi_core/services/ontology/OntologyService.py +17 -0
- naas_abi_core/services/ontology/adaptors/secondary/OntologyService_SecondaryAdaptor_NERPort.py +37 -0
- naas_abi_core/services/secret/Secret.py +138 -0
- naas_abi_core/services/secret/SecretPorts.py +40 -0
- naas_abi_core/services/secret/Secret_test.py +65 -0
- naas_abi_core/services/secret/adaptors/secondary/Base64Secret.py +57 -0
- naas_abi_core/services/secret/adaptors/secondary/Base64Secret_test.py +39 -0
- naas_abi_core/services/secret/adaptors/secondary/NaasSecret.py +81 -0
- naas_abi_core/services/secret/adaptors/secondary/NaasSecret_test.py +25 -0
- naas_abi_core/services/secret/adaptors/secondary/dotenv_secret_secondaryadaptor.py +26 -0
- naas_abi_core/services/triple_store/TripleStoreFactory.py +116 -0
- naas_abi_core/services/triple_store/TripleStorePorts.py +223 -0
- naas_abi_core/services/triple_store/TripleStoreService.py +419 -0
- naas_abi_core/services/triple_store/adaptors/secondary/AWSNeptune.py +1284 -0
- naas_abi_core/services/triple_store/adaptors/secondary/AWSNeptune_test.py +284 -0
- naas_abi_core/services/triple_store/adaptors/secondary/Oxigraph.py +597 -0
- naas_abi_core/services/triple_store/adaptors/secondary/Oxigraph_test.py +1474 -0
- naas_abi_core/services/triple_store/adaptors/secondary/TripleStoreService__SecondaryAdaptor__Filesystem.py +223 -0
- naas_abi_core/services/triple_store/adaptors/secondary/TripleStoreService__SecondaryAdaptor__ObjectStorage.py +234 -0
- naas_abi_core/services/triple_store/adaptors/secondary/base/TripleStoreService__SecondaryAdaptor__FileBase.py +18 -0
- naas_abi_core/services/vector_store/IVectorStorePort.py +101 -0
- naas_abi_core/services/vector_store/IVectorStorePort_test.py +189 -0
- naas_abi_core/services/vector_store/VectorStoreFactory.py +47 -0
- naas_abi_core/services/vector_store/VectorStoreService.py +171 -0
- naas_abi_core/services/vector_store/VectorStoreService_test.py +185 -0
- naas_abi_core/services/vector_store/__init__.py +13 -0
- naas_abi_core/services/vector_store/adapters/QdrantAdapter.py +251 -0
- naas_abi_core/services/vector_store/adapters/QdrantAdapter_test.py +57 -0
- naas_abi_core/utils/Expose.py +53 -0
- naas_abi_core/utils/Graph.py +182 -0
- naas_abi_core/utils/JSON.py +49 -0
- naas_abi_core/utils/LazyLoader.py +44 -0
- naas_abi_core/utils/Logger.py +12 -0
- naas_abi_core/utils/OntologyReasoner.py +141 -0
- naas_abi_core/utils/OntologyYaml.disabled.py +679 -0
- naas_abi_core/utils/SPARQL.py +256 -0
- naas_abi_core/utils/Storage.py +33 -0
- naas_abi_core/utils/StorageUtils.py +398 -0
- naas_abi_core/utils/String.py +52 -0
- naas_abi_core/utils/Workers.py +114 -0
- naas_abi_core/utils/__init__.py +0 -0
- naas_abi_core/utils/onto2py/README.md +0 -0
- naas_abi_core/utils/onto2py/__init__.py +10 -0
- naas_abi_core/utils/onto2py/__main__.py +29 -0
- naas_abi_core/utils/onto2py/onto2py.py +611 -0
- naas_abi_core/utils/onto2py/tests/ttl2py_test.py +271 -0
- naas_abi_core/workflow/__init__.py +5 -0
- naas_abi_core/workflow/workflow.py +48 -0
- naas_abi_core-1.0.0.dist-info/METADATA +75 -0
- naas_abi_core-1.0.0.dist-info/RECORD +124 -0
- naas_abi_core-1.0.0.dist-info/WHEEL +4 -0
- naas_abi_core-1.0.0.dist-info/entry_points.txt +3 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
from io import StringIO
|
|
2
|
+
|
|
3
|
+
import pytest
|
|
4
|
+
import requests
|
|
5
|
+
from naas_abi_core.utils.onto2py.onto2py import onto2py
|
|
6
|
+
from pydantic import ValidationError
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def ttl_to_module(ttl_file, module_name):
|
|
10
|
+
# Generate Python code from TTL
|
|
11
|
+
python_code = onto2py(ttl_file)
|
|
12
|
+
|
|
13
|
+
with open(module_name + ".py", "w") as f:
|
|
14
|
+
f.write(python_code)
|
|
15
|
+
|
|
16
|
+
import importlib.util
|
|
17
|
+
|
|
18
|
+
spec = importlib.util.spec_from_file_location(module_name, module_name + ".py")
|
|
19
|
+
module = importlib.util.module_from_spec(spec)
|
|
20
|
+
spec.loader.exec_module(module)
|
|
21
|
+
|
|
22
|
+
return module
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_cco_to_py():
|
|
26
|
+
"""Test conversion of CCO ontology to Python classes"""
|
|
27
|
+
response = requests.get(
|
|
28
|
+
"https://raw.githubusercontent.com/CommonCoreOntology/CommonCoreOntologies/refs/heads/develop/src/cco-merged/CommonCoreOntologiesMerged.ttl"
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
assert response.status_code == 200, f"Failed to fetch TTL file: {response.text}"
|
|
32
|
+
|
|
33
|
+
ttl_file = StringIO(response.text)
|
|
34
|
+
module = ttl_to_module(ttl_file, "cco_merged")
|
|
35
|
+
|
|
36
|
+
e = module.Ont00000671()
|
|
37
|
+
assert e.rdf().serialize(format="turtle") == e.rdf().serialize(format="turtle")
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def test_bfo_to_py():
|
|
41
|
+
"""Test conversion of BFO core ontology to Python classes"""
|
|
42
|
+
response = requests.get(
|
|
43
|
+
"https://raw.githubusercontent.com/BFO-ontology/BFO-2020/refs/heads/master/src/owl/bfo-core.ttl"
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
assert response.status_code == 200, f"Failed to fetch TTL file: {response.text}"
|
|
47
|
+
|
|
48
|
+
ttl_file = StringIO(response.text)
|
|
49
|
+
|
|
50
|
+
# Generate Python code from TTL
|
|
51
|
+
python_code = onto2py(ttl_file)
|
|
52
|
+
|
|
53
|
+
with open("bfo-core.py", "w") as f:
|
|
54
|
+
f.write(python_code)
|
|
55
|
+
|
|
56
|
+
import importlib.util
|
|
57
|
+
|
|
58
|
+
spec = importlib.util.spec_from_file_location("bfo_core", "bfo-core.py")
|
|
59
|
+
module = importlib.util.module_from_spec(spec)
|
|
60
|
+
spec.loader.exec_module(module)
|
|
61
|
+
|
|
62
|
+
# Verify we got some generated code
|
|
63
|
+
assert python_code, "No Python code was generated"
|
|
64
|
+
assert "class" in python_code, "No classes found in generated code"
|
|
65
|
+
assert "BaseModel" in python_code, "Pydantic BaseModel missing"
|
|
66
|
+
|
|
67
|
+
print("Generated Python code:")
|
|
68
|
+
print("=" * 50)
|
|
69
|
+
print(python_code)
|
|
70
|
+
print("=" * 50)
|
|
71
|
+
|
|
72
|
+
module.BFO_0000001()
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def test_simple_ttl():
|
|
76
|
+
"""Test with a simple TTL example"""
|
|
77
|
+
simple_ttl = """@prefix ex: <http://example.org/> .
|
|
78
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
79
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
|
80
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
81
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
82
|
+
|
|
83
|
+
# Define classes
|
|
84
|
+
ex:Person rdf:type owl:Class ;
|
|
85
|
+
rdfs:label "Person" ;
|
|
86
|
+
rdfs:comment "A human being" .
|
|
87
|
+
|
|
88
|
+
ex:Organization rdf:type owl:Class ;
|
|
89
|
+
rdfs:label "Organization" ;
|
|
90
|
+
rdfs:comment "A group or institution" .
|
|
91
|
+
|
|
92
|
+
# Define properties
|
|
93
|
+
ex:hasName rdf:type owl:DatatypeProperty ;
|
|
94
|
+
rdfs:domain ex:Person ;
|
|
95
|
+
rdfs:range xsd:string ;
|
|
96
|
+
rdfs:label "has name" .
|
|
97
|
+
|
|
98
|
+
ex:hasAge rdf:type owl:DatatypeProperty ;
|
|
99
|
+
rdfs:domain ex:Person ;
|
|
100
|
+
rdfs:range xsd:integer ;
|
|
101
|
+
rdfs:label "has age" .
|
|
102
|
+
|
|
103
|
+
ex:worksFor rdf:type owl:ObjectProperty ;
|
|
104
|
+
rdfs:domain ex:Person ;
|
|
105
|
+
rdfs:range ex:Organization ;
|
|
106
|
+
rdfs:label "works for" .
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
ttl_file = StringIO(simple_ttl)
|
|
110
|
+
python_code = onto2py(ttl_file)
|
|
111
|
+
|
|
112
|
+
print("Generated Python code from simple TTL:")
|
|
113
|
+
print("=" * 50)
|
|
114
|
+
print(python_code)
|
|
115
|
+
print("=" * 50)
|
|
116
|
+
|
|
117
|
+
# Verify expected content
|
|
118
|
+
assert "class Person(RDFEntity):" in python_code
|
|
119
|
+
assert "class Organization(RDFEntity):" in python_code
|
|
120
|
+
assert "hasName: Optional[str] = Field(default=None)" in python_code
|
|
121
|
+
assert "hasAge: Optional[int] = Field(default=None)" in python_code
|
|
122
|
+
assert "worksFor: Optional[Organization] = Field(default=None)" in python_code
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def test_shacl_ttl():
|
|
126
|
+
"""Test with a TTL example using SHACL constraints"""
|
|
127
|
+
shacl_ttl = """@prefix ex: <http://example.org/> .
|
|
128
|
+
@prefix owl: <http://www.w3.org/2002/07/owl#> .
|
|
129
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
|
130
|
+
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
|
|
131
|
+
@prefix sh: <http://www.w3.org/ns/shacl#> .
|
|
132
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
|
133
|
+
|
|
134
|
+
# Define classes
|
|
135
|
+
ex:Person rdf:type owl:Class ;
|
|
136
|
+
rdfs:label "Person" ;
|
|
137
|
+
rdfs:comment "A human being" .
|
|
138
|
+
|
|
139
|
+
ex:Pet rdf:type owl:Class ;
|
|
140
|
+
rdfs:label "Pet" ;
|
|
141
|
+
rdfs:comment "A domesticated animal kept for companionship" .
|
|
142
|
+
|
|
143
|
+
ex:PetOwner rdf:type owl:Class ;
|
|
144
|
+
rdfs:subClassOf ex:Person ;
|
|
145
|
+
rdfs:label "Pet Owner" ;
|
|
146
|
+
rdfs:comment "A person who owns a pet" .
|
|
147
|
+
|
|
148
|
+
# Define data properties
|
|
149
|
+
ex:hasName rdf:type owl:DatatypeProperty ;
|
|
150
|
+
rdfs:domain ex:Person ;
|
|
151
|
+
rdfs:range xsd:string ;
|
|
152
|
+
rdfs:label "has name" .
|
|
153
|
+
|
|
154
|
+
ex:hasAge rdf:type owl:DatatypeProperty ;
|
|
155
|
+
rdfs:domain ex:Person ;
|
|
156
|
+
rdfs:range xsd:integer ;
|
|
157
|
+
rdfs:label "has age" .
|
|
158
|
+
|
|
159
|
+
ex:petName rdf:type owl:DatatypeProperty ;
|
|
160
|
+
rdfs:domain ex:Pet ;
|
|
161
|
+
rdfs:range xsd:string ;
|
|
162
|
+
rdfs:label "pet name" .
|
|
163
|
+
|
|
164
|
+
# Define object properties
|
|
165
|
+
ex:hasPet rdf:type owl:ObjectProperty ;
|
|
166
|
+
rdfs:domain ex:PetOwner ;
|
|
167
|
+
rdfs:range ex:Pet ;
|
|
168
|
+
rdfs:label "has pet" .
|
|
169
|
+
|
|
170
|
+
# SHACL constraints
|
|
171
|
+
ex:PersonShape rdf:type sh:NodeShape ;
|
|
172
|
+
sh:targetClass ex:Person ;
|
|
173
|
+
sh:property [
|
|
174
|
+
sh:path ex:hasName ;
|
|
175
|
+
sh:minCount 1 ;
|
|
176
|
+
sh:maxCount 1 ;
|
|
177
|
+
sh:datatype xsd:string
|
|
178
|
+
] ;
|
|
179
|
+
sh:property [
|
|
180
|
+
sh:path ex:hasAge ;
|
|
181
|
+
sh:minCount 1 ;
|
|
182
|
+
sh:maxCount 1 ;
|
|
183
|
+
sh:datatype xsd:integer ;
|
|
184
|
+
sh:minInclusive 0 ;
|
|
185
|
+
sh:maxInclusive 150
|
|
186
|
+
] .
|
|
187
|
+
|
|
188
|
+
ex:PetShape rdf:type sh:NodeShape ;
|
|
189
|
+
sh:targetClass ex:Pet ;
|
|
190
|
+
sh:property [
|
|
191
|
+
sh:path ex:petName ;
|
|
192
|
+
sh:minCount 1 ;
|
|
193
|
+
sh:maxCount 1 ;
|
|
194
|
+
sh:datatype xsd:string
|
|
195
|
+
] .
|
|
196
|
+
|
|
197
|
+
ex:PetOwnerShape rdf:type sh:NodeShape ;
|
|
198
|
+
sh:targetClass ex:PetOwner ;
|
|
199
|
+
sh:property [
|
|
200
|
+
sh:path ex:hasPet ;
|
|
201
|
+
sh:minCount 1 ;
|
|
202
|
+
sh:class ex:Pet
|
|
203
|
+
] .
|
|
204
|
+
"""
|
|
205
|
+
|
|
206
|
+
ttl_file = StringIO(shacl_ttl)
|
|
207
|
+
python_code = onto2py(ttl_file)
|
|
208
|
+
|
|
209
|
+
print("Generated Python code from SHACL TTL:")
|
|
210
|
+
print("=" * 50)
|
|
211
|
+
print(python_code)
|
|
212
|
+
print("=" * 50)
|
|
213
|
+
|
|
214
|
+
# Verify expected content
|
|
215
|
+
assert "class Person(RDFEntity):" in python_code
|
|
216
|
+
assert "class Pet(RDFEntity):" in python_code
|
|
217
|
+
assert "class PetOwner(Person, RDFEntity):" in python_code
|
|
218
|
+
assert "hasName: str = Field(...)" in python_code # Required property
|
|
219
|
+
assert "hasAge: int = Field(...)" in python_code # Required property
|
|
220
|
+
assert "petName: str = Field(...)" in python_code # Required property for Pet
|
|
221
|
+
assert "hasPet: Pet = Field(...)" in python_code # Required property for PetOwner
|
|
222
|
+
|
|
223
|
+
import os
|
|
224
|
+
import tempfile
|
|
225
|
+
|
|
226
|
+
temp_dir = tempfile.mkdtemp()
|
|
227
|
+
temp_file = os.path.join(temp_dir, "shacl_ttl.py")
|
|
228
|
+
|
|
229
|
+
with open(temp_file, "w") as f:
|
|
230
|
+
f.write(python_code)
|
|
231
|
+
|
|
232
|
+
with open("shacl_ttl.py", "w") as f:
|
|
233
|
+
f.write(python_code)
|
|
234
|
+
|
|
235
|
+
# Load the generated code
|
|
236
|
+
import importlib.util
|
|
237
|
+
|
|
238
|
+
spec = importlib.util.spec_from_file_location("shacl_ttl", temp_file)
|
|
239
|
+
module = importlib.util.module_from_spec(spec)
|
|
240
|
+
spec.loader.exec_module(module)
|
|
241
|
+
|
|
242
|
+
# assert module.Person.hasName is not None, module.Person
|
|
243
|
+
# assert module.Person.hasAge is not None, module.Person
|
|
244
|
+
# assert module.Pet.petName is not None, module.Pet
|
|
245
|
+
# assert module.PetOwner.hasPet is not None, module.PetOwner
|
|
246
|
+
|
|
247
|
+
person = module.Person(hasName="John Doe", hasAge=30)
|
|
248
|
+
print(person)
|
|
249
|
+
assert person.hasName == "John Doe"
|
|
250
|
+
assert person.hasAge == 30
|
|
251
|
+
|
|
252
|
+
pet = module.Pet(petName="Fluffy")
|
|
253
|
+
print(pet)
|
|
254
|
+
assert pet.petName == "Fluffy"
|
|
255
|
+
|
|
256
|
+
pet_owner = module.PetOwner(hasPet=pet, hasName="John Doe", hasAge=30)
|
|
257
|
+
print(pet_owner)
|
|
258
|
+
assert pet_owner.hasPet == pet
|
|
259
|
+
|
|
260
|
+
g = pet_owner.rdf()
|
|
261
|
+
for s, p, o in g:
|
|
262
|
+
print(s, p, o)
|
|
263
|
+
print(g.serialize(format="turtle"))
|
|
264
|
+
# Should have 6 triples: 2 type declarations + 4 property assertions
|
|
265
|
+
# PetOwner: type, hasName, hasAge, hasPet
|
|
266
|
+
# Pet: type, petName
|
|
267
|
+
assert len(list(g)) == 6, list(g)
|
|
268
|
+
|
|
269
|
+
# Assert this is raising a validation error
|
|
270
|
+
with pytest.raises(ValidationError):
|
|
271
|
+
module.PetOwner(hasName="John Doe", hasAge=30)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Generic, TypeVar
|
|
3
|
+
|
|
4
|
+
from pydantic import BaseModel
|
|
5
|
+
|
|
6
|
+
from naas_abi_core.utils.Expose import Expose
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class WorkflowConfiguration:
|
|
11
|
+
pass
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class WorkflowParameters(BaseModel):
|
|
15
|
+
pass
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
P = TypeVar("P", bound=WorkflowParameters)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class Workflow(Expose, Generic[P]):
|
|
22
|
+
"""A workflow represents a sequence of operations that can be exposed in multiple ways.
|
|
23
|
+
|
|
24
|
+
Workflows encapsulate business logic that can be:
|
|
25
|
+
- Scheduled as background jobs
|
|
26
|
+
- Exposed as tools for AI agents
|
|
27
|
+
- Served via API endpoints
|
|
28
|
+
- Run directly as Python code
|
|
29
|
+
|
|
30
|
+
The workflow pattern provides a consistent way to package functionality
|
|
31
|
+
that needs to be accessible through multiple interfaces.
|
|
32
|
+
|
|
33
|
+
Attributes:
|
|
34
|
+
__configuration (WorkflowConfiguration): Configuration parameters for the workflow
|
|
35
|
+
|
|
36
|
+
Example:
|
|
37
|
+
>>> config = MyWorkflowConfig(param1="value1")
|
|
38
|
+
>>> workflow = MyWorkflow(config)
|
|
39
|
+
>>> result = workflow.run()
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
__configuration: WorkflowConfiguration
|
|
43
|
+
|
|
44
|
+
def __init__(self, configuration: WorkflowConfiguration):
|
|
45
|
+
self.__configuration = configuration
|
|
46
|
+
|
|
47
|
+
def run(self, parameters: P):
|
|
48
|
+
pass
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: naas-abi-core
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Abi framework allowing you to build your AI system.
|
|
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
|
+
Requires-Dist: boto3<2,>=1.38.19
|
|
8
|
+
Requires-Dist: click<8.2,>=8.1.1
|
|
9
|
+
Requires-Dist: dotenv>=0.9.9
|
|
10
|
+
Requires-Dist: langchain-openai<0.4,>=0.3.3
|
|
11
|
+
Requires-Dist: langgraph-checkpoint-postgres>=2.0.21
|
|
12
|
+
Requires-Dist: langgraph>=0.6.6
|
|
13
|
+
Requires-Dist: loguru<0.8,>=0.7.2
|
|
14
|
+
Requires-Dist: pip>=25.1.1
|
|
15
|
+
Requires-Dist: psycopg[binary,pool]>=3.0.0
|
|
16
|
+
Requires-Dist: pydantic>=2.11.5
|
|
17
|
+
Requires-Dist: pydash>=8.0.5
|
|
18
|
+
Requires-Dist: qdrant-client>=1.14.3
|
|
19
|
+
Requires-Dist: rdflib<8,>=7.1.1
|
|
20
|
+
Requires-Dist: rich<14,>=13.9.4
|
|
21
|
+
Requires-Dist: spacy>=3.8.7
|
|
22
|
+
Requires-Dist: sparqlwrapper>=2.0.0
|
|
23
|
+
Requires-Dist: sse-starlette<3,>=2.1.3
|
|
24
|
+
Requires-Dist: starlette>=0.46.2
|
|
25
|
+
Requires-Dist: types-tqdm>=4.67.0.20250809
|
|
26
|
+
Provides-Extra: ssh
|
|
27
|
+
Requires-Dist: paramiko<4.0.0,>=3.5.1; extra == 'ssh'
|
|
28
|
+
Requires-Dist: sshtunnel>=0.4.0; extra == 'ssh'
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
|
|
31
|
+
# ABI Library
|
|
32
|
+
|
|
33
|
+
The ABI Library is the core implementation of ABI's concepts, designed to build a unified AI system. This library provides the fundamental building blocks for connecting, processing, and utilizing data across different AI components.
|
|
34
|
+
|
|
35
|
+
## Core Concepts
|
|
36
|
+
|
|
37
|
+
### Integration
|
|
38
|
+
Integrations provide standardized connections to third-party services and data sources. They handle:
|
|
39
|
+
- Authentication and authorization
|
|
40
|
+
- API communication
|
|
41
|
+
- Data format standardization
|
|
42
|
+
- Error handling and retries
|
|
43
|
+
|
|
44
|
+
### Pipeline
|
|
45
|
+
Pipelines are responsible for data ingestion and transformation into the ontological layer. They:
|
|
46
|
+
- Utilize integrations to fetch data
|
|
47
|
+
- Transform raw data into semantic representations
|
|
48
|
+
- Maintain data consistency and quality
|
|
49
|
+
- Map external data models to ABI's ontology
|
|
50
|
+
|
|
51
|
+
### Workflow
|
|
52
|
+
Workflows leverage the ontological layer to implement business logic and provide data to consumers. They can be used by:
|
|
53
|
+
- Large Language Models (LLMs)
|
|
54
|
+
- Remote APIs and services
|
|
55
|
+
- Other automated processes
|
|
56
|
+
|
|
57
|
+
### Services
|
|
58
|
+
Services form the foundational layer of ABI, implementing the Hexagonal Architecture (Ports & Adapters) pattern to provide flexible and system-agnostic interfaces. This architectural approach allows ABI to seamlessly integrate with existing systems while maintaining clean separation of concerns.
|
|
59
|
+
|
|
60
|
+
Each service defines a primary port (interface) that specifies its capabilities, while multiple secondary adapters can implement this interface for different backend systems. This means you can:
|
|
61
|
+
|
|
62
|
+
- Easily swap implementations without changing business logic
|
|
63
|
+
- Add new integrations by implementing new adapters
|
|
64
|
+
- Test components in isolation using mock adapters
|
|
65
|
+
|
|
66
|
+
For example, the Secret Service could connect to various backend systems through different adapters:
|
|
67
|
+
- Hashicorp Vault
|
|
68
|
+
- AWS Secrets Manager
|
|
69
|
+
- Azure Key Vault
|
|
70
|
+
- Environment Variables
|
|
71
|
+
- Local File System
|
|
72
|
+
- Google Cloud Secret Manager
|
|
73
|
+
- Kubernetes Secrets
|
|
74
|
+
|
|
75
|
+
This modular approach ensures that ABI can be deployed in any environment while maintaining consistent interfaces and behavior across different infrastructure choices.
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
naas_abi_core/__init__.py,sha256=kR93ywABUBo8-tAWCHMbRcCDCJZjqq4hWwxMk3Cr9fI,56
|
|
2
|
+
naas_abi_core/apps/api/api.py,sha256=2z495FbiwgIuPkrWgssAEYdN6AG2LcCYiLboy4oGI8U,6986
|
|
3
|
+
naas_abi_core/apps/api/api_test.py,sha256=7H_VgnbsGqu6oGY-apAHjJr_yjIcGHY0heaEThWBsUk,10537
|
|
4
|
+
naas_abi_core/apps/api/openapi_doc.py,sha256=JbwzcmSP-Yl1rbN0QvUwOSmOFf-yKXECZ-2ptI7fWoU,11834
|
|
5
|
+
naas_abi_core/apps/mcp/mcp_server.py,sha256=U-wDl8rswMk4nefGg2SUByw4x8CM10M59FfLHxIKC-o,8391
|
|
6
|
+
naas_abi_core/apps/mcp/mcp_server_test.py,sha256=8jixnDyERM_HjjDTRtPDQcJ_rzA0ESAn147sl2Gk8gw,5636
|
|
7
|
+
naas_abi_core/apps/terminal_agent/main.py,sha256=ucrNCGjjixyiO47Eily1yAmrwznS6KOcB1kk02yt_m8,19631
|
|
8
|
+
naas_abi_core/apps/terminal_agent/terminal_style.py,sha256=YOpfvBlKU52wNyGEKbZPiRQVKxug-hI92H8ScV5L8Ew,5254
|
|
9
|
+
naas_abi_core/cli/__init__.py,sha256=k5L0LznXVHyZxINdoqe0IOVz1IaSXsUB9ptIP1dEnns,1275
|
|
10
|
+
naas_abi_core/cli/agent.py,sha256=fMdbC7HsrOfZSf5zVRHWSmyrejI5mUdRlAT5v5YHXzk,658
|
|
11
|
+
naas_abi_core/cli/chat.py,sha256=3t_TJ7vqCNs0MIIXOtlSke3nzy4rMSEJtB3P6pKItMo,856
|
|
12
|
+
naas_abi_core/cli/config.py,sha256=CcdDX6HKCP32NjRhbVsCOwLUC9LmaqTm2sv8W5rOt00,1484
|
|
13
|
+
naas_abi_core/cli/init.py,sha256=Pcy2-hy-FvpXf3UOKMP6agWyFrCl9z-KP5ktEWltPy0,220
|
|
14
|
+
naas_abi_core/cli/module.py,sha256=TBl-SpeGUcy1Rrp40Irbt34yQS00xJcNje-OijNE4Hk,717
|
|
15
|
+
naas_abi_core/cli/new.py,sha256=aFhKbTHwqYkPdzrd7r8i_h9dfzXNjI03t8qVeqME8w8,262
|
|
16
|
+
naas_abi_core/cli/secret.py,sha256=u_yUZgVEcns-CM-qsIIZUHX8j8T6aioJYluqSQhnXFE,2491
|
|
17
|
+
naas_abi_core/engine/Engine.py,sha256=jGsGleO9PeFb7D9LlyO6gH1FFCh7Vj8wC7s0N0cuyxU,3257
|
|
18
|
+
naas_abi_core/engine/EngineProxy.py,sha256=o-D8LlP-PjQ_Yct4JWrDZw7mA7yporxb2XrJFowLYrY,3379
|
|
19
|
+
naas_abi_core/engine/Engine_test.py,sha256=8eLZEnkL0IR4VAr6LF8fJ_fxZzi9s1mXCLgTVOIsR3E,161
|
|
20
|
+
naas_abi_core/engine/IEngine.py,sha256=u-m-Qrvt3SP3gYKWPFPVjV8rs05D6NGnzO3XA0FInnw,2865
|
|
21
|
+
naas_abi_core/engine/conftest.py,sha256=Al-SRVLrEdbTrX8sxQ3bBK4w1bbzE4GoBkzoBK-aXlg,932
|
|
22
|
+
naas_abi_core/engine/engine_configuration/EngineConfiguration.py,sha256=XA8BDyuYWvjwREGHDBB1iGFe5neJKFKsaHFRnPPKJXI,5378
|
|
23
|
+
naas_abi_core/engine/engine_configuration/EngineConfiguration_GenericLoader.py,sha256=KK2TQx6cNmoqFcwr9En00NKrX4ckkZl4ecv9QCUwPyc,1995
|
|
24
|
+
naas_abi_core/engine/engine_configuration/EngineConfiguration_ObjectStorageService.py,sha256=cPZBs5-2dqX-piIZ7KTqiOce6O6GbnDDwjPGcfDN_U4,4736
|
|
25
|
+
naas_abi_core/engine/engine_configuration/EngineConfiguration_ObjectStorageService_test.py,sha256=h1PdIbMTJWi_lG83YgpI6zg8gRo0WEWvGSE6R4uKQp4,1063
|
|
26
|
+
naas_abi_core/engine/engine_configuration/EngineConfiguration_SecretService.py,sha256=nqQ7XmfZZIx4kUvSO_FkBsSf9mcrRdwpsF_vkEdKqgU,4064
|
|
27
|
+
naas_abi_core/engine/engine_configuration/EngineConfiguration_TripleStoreService.py,sha256=XCyn1DO3oW7xPlrfmD1lo3GPymDCVDPI-QXw-lbzzIQ,6278
|
|
28
|
+
naas_abi_core/engine/engine_configuration/EngineConfiguration_VectorStoreService.py,sha256=aoO-cmC1dfaXT4gqFivrO1ntB0xK8rjFoWmruf-I67U,2210
|
|
29
|
+
naas_abi_core/engine/engine_configuration/EngineConfiguration_test.py,sha256=PL4A4Dawq6tfyHsiIkqbHhovc7wkIHcVZra6llRI-CY,286
|
|
30
|
+
naas_abi_core/engine/engine_configuration/utils/PydanticModelValidator.py,sha256=jZzLqLvR8HawpyGYiUJEng3NlebLHiN3mVFOzNDSWs8,504
|
|
31
|
+
naas_abi_core/engine/engine_loaders/EngineModuleLoader.py,sha256=4VsGtPsaeslej2JuyksHUbHJEY6J096cnr3iuTrhnpY,12043
|
|
32
|
+
naas_abi_core/engine/engine_loaders/EngineOntologyLoader.py,sha256=dKVnzBRCFQDjHDdkG5wtBlXP3TDf6JY1mwGfKjVqhqs,527
|
|
33
|
+
naas_abi_core/engine/engine_loaders/EngineServiceLoader.py,sha256=OPBTFG1c-QAFulXqNMwEh58IZ0ynClP5fFHdW3pS9PU,1772
|
|
34
|
+
naas_abi_core/integration/__init__.py,sha256=bB7l26o_ksuEo8O5dggIaZcolJbveJxGZe0-J_UzL3Y,305
|
|
35
|
+
naas_abi_core/integration/integration.py,sha256=tbdAV63Uisml9G8diZl20_JDlgJVFuLQpK_7VE4qgSw,811
|
|
36
|
+
naas_abi_core/models/Model.py,sha256=s1Aj8Mcy113uhgYR4-lSfoyLnucOzOlnxKu6QKSwfeY,8223
|
|
37
|
+
naas_abi_core/models/OpenRouter.py,sha256=6bvn_Dl4mQB1J-XTMoF1rD8F4FNszLAA0358fzJDBxs,485
|
|
38
|
+
naas_abi_core/models/OpenRouter_test.py,sha256=nLlVdBaBan0mkdbnF3vrWGJYr8zQAC7Fl3wLUc37Mvw,1168
|
|
39
|
+
naas_abi_core/module/Module.py,sha256=C5AlEmofh9bYUIMd817ODZExC4m6nvs6Rm6sRtNPN5E,8904
|
|
40
|
+
naas_abi_core/module/ModuleAgentLoader.py,sha256=Tc2KYODt8cGeK__QLk7h0J5QZ0EM-ZsQZTDeCJ4ip38,1965
|
|
41
|
+
naas_abi_core/module/ModuleUtils.py,sha256=6wUHpbdl0y_16xvz7W-NSOaRyLW9N9zx2Lg_Jkg0eMM,707
|
|
42
|
+
naas_abi_core/modules/templatablesparqlquery/README.md,sha256=Cpz3FPMc1q-P5HmQ7848er5_MRTHLDLqYqq0nFrs7Dw,6991
|
|
43
|
+
naas_abi_core/modules/templatablesparqlquery/__init__.py,sha256=Y2tAF9omNqYhJGYbt4MA28q7bnTX3wy3ATvJQwEwAmU,1225
|
|
44
|
+
naas_abi_core/modules/templatablesparqlquery/ontologies/TemplatableSparqlQueryOntology.ttl,sha256=P8c4ZlWV6nzXZ7DiOlY1aDE39cKh0rlmjKp03Wc7U-8,4933
|
|
45
|
+
naas_abi_core/modules/templatablesparqlquery/workflows/GenericWorkflow.py,sha256=1wo9KAlNkSGXfZtQVJTi4XvDNTEMiyB9OCthkTMjeZY,1617
|
|
46
|
+
naas_abi_core/modules/templatablesparqlquery/workflows/TemplatableSparqlQueryLoader.py,sha256=_NU6RN1VZnv5N5GAYCsYCqRv07IgxemwZPd0fCxkGFI,7351
|
|
47
|
+
naas_abi_core/pipeline/__init__.py,sha256=4de6BzXJI6nTSI7baeqe4IoN-Q95idsADchU6Eiv55Q,309
|
|
48
|
+
naas_abi_core/pipeline/pipeline.py,sha256=m1QWXwdy_0yr8hxILNwoPSK2-vIz4P9WeZ6pDm9gJSg,2186
|
|
49
|
+
naas_abi_core/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
|
+
naas_abi_core/services/agent/Agent.py,sha256=SOoo1J50qMJwfgart2zUC98oa6C43L_FN5UJl90182k,63648
|
|
51
|
+
naas_abi_core/services/agent/AgentMemory_test.py,sha256=sSqDkr0o0MgeHudsX5s3u2oFLaAX7GVgyQPwdsD76Cs,650
|
|
52
|
+
naas_abi_core/services/agent/Agent_test.py,sha256=VITdYn0fSK-7dq67qVQbirkwZBIRBwtRqdaWy9E87VY,6343
|
|
53
|
+
naas_abi_core/services/agent/IntentAgent.py,sha256=gGAeLGLuJUNAi8cxsKRoazaoI6_75rX5sgV7qHY4R6w,45100
|
|
54
|
+
naas_abi_core/services/agent/IntentAgent_test.py,sha256=g5mI1EjLGsJm2rssxp3lsdP-WJbp6uuWePWGGazkgm8,4453
|
|
55
|
+
naas_abi_core/services/agent/test_agent_memory.py,sha256=X1ZgEEDq10PYisnouBodThDT-JIgG_UHVmYp4xkBhOs,11079
|
|
56
|
+
naas_abi_core/services/agent/test_postgres_integration.py,sha256=tzVJjBAqcHomUVuTQ5-kom3POOgbYjilw5Vzfr9Q6go,4458
|
|
57
|
+
naas_abi_core/services/agent/beta/Embeddings.py,sha256=qC0DXWGhns_c04DeRzzbHFcgwY5cvcxuxWeL65O0su4,5109
|
|
58
|
+
naas_abi_core/services/agent/beta/IntentMapper.py,sha256=NgZLybuj2Rp-jZmVRiMbtFESwOFldwCOXISkogOEYMc,3834
|
|
59
|
+
naas_abi_core/services/agent/beta/LocalModel.py,sha256=QCOyEngihK8oh1CvFmiGUPUdvUAb2_tEwPPri45xoz0,3935
|
|
60
|
+
naas_abi_core/services/agent/beta/VectorStore.py,sha256=ps6FvJz6Y-pb2WpcSDH1zm6is44tWJhSw0F2kziVxDI,2980
|
|
61
|
+
naas_abi_core/services/cache/CacheFactory.py,sha256=i3kNZ3OjFGq4myxo1GvYyhp7DTSVoepQsXC3n9iIgzI,1054
|
|
62
|
+
naas_abi_core/services/cache/CachePort.py,sha256=bYmTqnOrCVpSB_d5Dq_oq3sWtt7GtzsTUO8pEQT-Jlg,1736
|
|
63
|
+
naas_abi_core/services/cache/CacheService.py,sha256=e2iQN4ch5TMno-dHDe0gkfiELjijIS2OF5u54IKcqHE,10356
|
|
64
|
+
naas_abi_core/services/cache/CacheService_test.py,sha256=Wigncmy4tsCp3EDSidmXAvl7G8dYlCV87YkZjN5wBGU,2429
|
|
65
|
+
naas_abi_core/services/cache/adapters/secondary/CacheFSAdapter.py,sha256=mMmo-KNdSATwjlOdqhoJj42pQvKXo2Q-SzQ_PXhOyho,1392
|
|
66
|
+
naas_abi_core/services/object_storage/ObjectStorageFactory.py,sha256=cKbmlfO4OyLGDCSwBzEER5FAS_UrdfxsE6fm3P7Map4,1910
|
|
67
|
+
naas_abi_core/services/object_storage/ObjectStoragePort.py,sha256=JIx0DCwgI4ZCs2AateQ6iPQoCPepjfTChXHSUY28alU,1107
|
|
68
|
+
naas_abi_core/services/object_storage/ObjectStorageService.py,sha256=GGBuqOxZD0xSCkLrFJRcg8zJHrusXEtocPS15-b0d1Q,1382
|
|
69
|
+
naas_abi_core/services/object_storage/adapters/secondary/ObjectStorageSecondaryAdapterFS.py,sha256=njVHg9reyUAhUfHqqPpIVB36ZIxLO1Dpa3Ife__3VUI,1702
|
|
70
|
+
naas_abi_core/services/object_storage/adapters/secondary/ObjectStorageSecondaryAdapterNaas.py,sha256=qtiW3-1gdw5UxUcV4w5gbg8KQkcw_NnqLSL6x_P2owU,4275
|
|
71
|
+
naas_abi_core/services/object_storage/adapters/secondary/ObjectStorageSecondaryAdapterS3.py,sha256=j-uM0Akuh1ytHm5uiz89ipaPO8dNjNpi4frcethzPek,5995
|
|
72
|
+
naas_abi_core/services/ontology/OntologyPorts.py,sha256=CANMwmXps5k2IB1pq1I5723HnR97nDgysh8OZZ7fwrE,1160
|
|
73
|
+
naas_abi_core/services/ontology/OntologyService.py,sha256=-shSDmL5zvEvNjTbDQ1pq2ziwnJvfR-ka6XJh1AcDuA,542
|
|
74
|
+
naas_abi_core/services/ontology/adaptors/secondary/OntologyService_SecondaryAdaptor_NERPort.py,sha256=CNGnlvtoADUki8fEWnanD4Xe7_osQrpWDusZOLu1mgo,1303
|
|
75
|
+
naas_abi_core/services/secret/Secret.py,sha256=7odnAtpkC12laA8CFzE_W2NOFpDyaW2TmoebUCFMSQE,5159
|
|
76
|
+
naas_abi_core/services/secret/SecretPorts.py,sha256=E-oBxE49OZmVYbKTwbtsuxjaU58tVXFBMbblmVVbd7k,996
|
|
77
|
+
naas_abi_core/services/secret/Secret_test.py,sha256=rRLAsBCNDMduUwCeCSdlWtIFwguqFeVdRp-3lF6R9mc,1581
|
|
78
|
+
naas_abi_core/services/secret/adaptors/secondary/Base64Secret.py,sha256=Py7bBEBnkaBnuD9wtXO_tMI5HiM7olspOvfBRRq57Tw,1967
|
|
79
|
+
naas_abi_core/services/secret/adaptors/secondary/Base64Secret_test.py,sha256=wwdfMJrkh6vFZabZie9xyQHYlTjPAfouV-sPI4pk8MM,1287
|
|
80
|
+
naas_abi_core/services/secret/adaptors/secondary/NaasSecret.py,sha256=b31HLYCN3JzYwlWwsiTlQ3FM7t9sLFz7dF3eMmFnA6c,2755
|
|
81
|
+
naas_abi_core/services/secret/adaptors/secondary/NaasSecret_test.py,sha256=gR2hjU8e3hbkWn_suhwj4kfWLjTZjZavj-5R-z93zjU,625
|
|
82
|
+
naas_abi_core/services/secret/adaptors/secondary/dotenv_secret_secondaryadaptor.py,sha256=gVNPGhtwfu_j_73PpWQtHC1gx8yR0qDqgjn4m1yppXs,782
|
|
83
|
+
naas_abi_core/services/triple_store/TripleStoreFactory.py,sha256=4cCWJUhmXo5-yB61fyDwc-pigIYZo_PzmPW_5pY5I-E,4560
|
|
84
|
+
naas_abi_core/services/triple_store/TripleStorePorts.py,sha256=dRhDc5-uiXDZQWzscqUd972EPi_pafPLkj4sXwxF8Xs,6681
|
|
85
|
+
naas_abi_core/services/triple_store/TripleStoreService.py,sha256=X1ty-fH0A1XyLhZpU6oc3h-BgOoarAHSMPzITBBVhlY,16274
|
|
86
|
+
naas_abi_core/services/triple_store/adaptors/secondary/AWSNeptune.py,sha256=fJlkf1QIOj4FCBCSotCfmlv15QtbKDFONcGVtu_W5v8,49390
|
|
87
|
+
naas_abi_core/services/triple_store/adaptors/secondary/AWSNeptune_test.py,sha256=b9LiXwQ3EWem5T_OplJWgXQ-cPwkrfomKO5MQx6zwF4,7662
|
|
88
|
+
naas_abi_core/services/triple_store/adaptors/secondary/Oxigraph.py,sha256=1VXtc-Ew7unmqULTA95nN8gnaYWP0Leb3rKbuWe1vRo,20729
|
|
89
|
+
naas_abi_core/services/triple_store/adaptors/secondary/Oxigraph_test.py,sha256=oVyBHGYsrZn9HpzC4aRBi3w515yU0vXG8Yo1mIZN1hk,57224
|
|
90
|
+
naas_abi_core/services/triple_store/adaptors/secondary/TripleStoreService__SecondaryAdaptor__Filesystem.py,sha256=y0SC9qZnpG6Z7mXRSQ_glMPzEqimmgK1Tj2G65I73UQ,7494
|
|
91
|
+
naas_abi_core/services/triple_store/adaptors/secondary/TripleStoreService__SecondaryAdaptor__ObjectStorage.py,sha256=Y6LQDp-S6fi-Uf-f1hKr4lSFmiOE86XRDmUqryRZNvk,7935
|
|
92
|
+
naas_abi_core/services/triple_store/adaptors/secondary/base/TripleStoreService__SecondaryAdaptor__FileBase.py,sha256=pdioenLk37t3ZCXC4wm8cvKlWPtAUkbs2lEzYpfZt1Q,645
|
|
93
|
+
naas_abi_core/services/vector_store/IVectorStorePort.py,sha256=0YTKO3BZPPmbVFFEo2e5f-dZDNxOTqD9S05dFlNdHY8,2186
|
|
94
|
+
naas_abi_core/services/vector_store/IVectorStorePort_test.py,sha256=vyCRZTV41wP7mu_MVhPjmhyRLLCJ1_hFXmhvoe31D_Q,6267
|
|
95
|
+
naas_abi_core/services/vector_store/VectorStoreFactory.py,sha256=brCFjz_mDe2Oonfwb0hAMx8LH-8aHNEbMu2x1G9XhrQ,1652
|
|
96
|
+
naas_abi_core/services/vector_store/VectorStoreService.py,sha256=Zy3mlAZ2afXGwV2L5eoDdqKn4sTgMoxZNRkQrHsrlog,5821
|
|
97
|
+
naas_abi_core/services/vector_store/VectorStoreService_test.py,sha256=LKGdUJoayVM5mFlRPdv7DaXs6i5DhCdmjG-ntvRTDwM,6890
|
|
98
|
+
naas_abi_core/services/vector_store/__init__.py,sha256=tuRLebTOVhH5UF8JRke3rVTze1V3WK1DFT4k9ZYHqeA,407
|
|
99
|
+
naas_abi_core/services/vector_store/adapters/QdrantAdapter.py,sha256=rlgjwbPXxFU1sAiNX8_57ia-5svN3e5kAkE6p42kJRI,7981
|
|
100
|
+
naas_abi_core/services/vector_store/adapters/QdrantAdapter_test.py,sha256=JyKNfx-e4M7VybWViWrGWG8KiAnBa0oOwT-W_Yg23Uw,1891
|
|
101
|
+
naas_abi_core/utils/Expose.py,sha256=_01Qz5_-T8H75ssC0e-BIiPe8IxllHgrhynjmjX8m1o,1709
|
|
102
|
+
naas_abi_core/utils/Graph.py,sha256=FoBuiTrcLw4dzhROnd7JHp-LMxMuwJISFbtdrwpoM24,6288
|
|
103
|
+
naas_abi_core/utils/JSON.py,sha256=onIs-E3GWz4fvRuWBQpyb9qRNXCOJPf9x1yV1-jDlqU,1687
|
|
104
|
+
naas_abi_core/utils/LazyLoader.py,sha256=rWrnFVuKCK1WrtNgeiegT_i7AkxGy9qK2hfhsXV4dCY,1120
|
|
105
|
+
naas_abi_core/utils/Logger.py,sha256=imA6Z_zdzNeKN8Mjbwh0yZUQYYqpKh2IIZutt-Gxy7U,201
|
|
106
|
+
naas_abi_core/utils/OntologyReasoner.py,sha256=OgDgiymd7HuDI28XZfcS2-9QeR7_jY9o9LWBQu2AU7k,4591
|
|
107
|
+
naas_abi_core/utils/OntologyYaml.disabled.py,sha256=y5dYzD6w3yByQ4I-T6km6T2J0t-sTNy6iNm8ocpffyA,25246
|
|
108
|
+
naas_abi_core/utils/SPARQL.py,sha256=Yjk2INdNIUuv8P26-ToqNik5odyUroybzWvijMsfcns,9313
|
|
109
|
+
naas_abi_core/utils/Storage.py,sha256=XgB8KcYgnF8armlvxJrZbJPcsnPSb8ByNCnVchFMpo4,1205
|
|
110
|
+
naas_abi_core/utils/StorageUtils.py,sha256=WFGuUSe9u44BXLi5JqnVoHEGmWGpZTFUZv1empbe5dU,13654
|
|
111
|
+
naas_abi_core/utils/String.py,sha256=K7JcFYjoKH0OjziqMJuIougoNDlcTobcigXzwmvdv0c,1367
|
|
112
|
+
naas_abi_core/utils/Workers.py,sha256=dqrcEsoiA8EcSAX6Ko77-RO_Ko5Cqusv9yxoWALIIxY,3431
|
|
113
|
+
naas_abi_core/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
114
|
+
naas_abi_core/utils/onto2py/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
|
+
naas_abi_core/utils/onto2py/__init__.py,sha256=mhTtX2gCv-IyWG71hiCYiOEbGOuDTssaOcqXxqySxn0,163
|
|
116
|
+
naas_abi_core/utils/onto2py/__main__.py,sha256=b-brUMSGdg972Cr06V6BVIdSMTw17--h7b9zE3UPZ4E,696
|
|
117
|
+
naas_abi_core/utils/onto2py/onto2py.py,sha256=_wn9qrrsWd8gO-BY4_jQJVfY87e9MJ2Er2Rf4FXcNls,24095
|
|
118
|
+
naas_abi_core/utils/onto2py/tests/ttl2py_test.py,sha256=5OZqSxPffjJYiX9T4rT1mV0PT1Qhf6goqEYT_mAPnaI,8055
|
|
119
|
+
naas_abi_core/workflow/__init__.py,sha256=hZD58mCB1PApxITqftP_xgjxL7NeLvOfI-rJENg1ENs,250
|
|
120
|
+
naas_abi_core/workflow/workflow.py,sha256=ZufSS073JztVl0OQRTqNyK7FepFvv7gXlc4j5FAEZCI,1216
|
|
121
|
+
naas_abi_core-1.0.0.dist-info/METADATA,sha256=dwnzb1TY2WJYuXod20dyR4r8VsMGDsYkz2RQdvTqqYo,3192
|
|
122
|
+
naas_abi_core-1.0.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
123
|
+
naas_abi_core-1.0.0.dist-info/entry_points.txt,sha256=R6N3E2Hh92nTrji34JIwBgc6c-wVpfBYBTwkU0xe64E,79
|
|
124
|
+
naas_abi_core-1.0.0.dist-info/RECORD,,
|