trustgraph-base 2.2.16__tar.gz → 2.2.17__tar.gz

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.
Files changed (164) hide show
  1. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/PKG-INFO +1 -1
  2. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/flow.py +39 -0
  3. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/socket_client.py +25 -0
  4. trustgraph_base-2.2.17/trustgraph/base_version.py +1 -0
  5. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/__init__.py +7 -0
  6. trustgraph_base-2.2.17/trustgraph/messaging/translators/sparql_query.py +115 -0
  7. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/__init__.py +2 -1
  8. trustgraph_base-2.2.17/trustgraph/schema/services/sparql_query.py +44 -0
  9. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph_base.egg-info/PKG-INFO +1 -1
  10. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph_base.egg-info/SOURCES.txt +2 -0
  11. trustgraph_base-2.2.16/trustgraph/base_version.py +0 -1
  12. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/README.md +0 -0
  13. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/pyproject.toml +0 -0
  14. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/setup.cfg +0 -0
  15. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/__init__.py +0 -0
  16. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/api.py +0 -0
  17. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/async_bulk_client.py +0 -0
  18. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/async_flow.py +0 -0
  19. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/async_metrics.py +0 -0
  20. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/async_socket_client.py +0 -0
  21. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/bulk_client.py +0 -0
  22. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/collection.py +0 -0
  23. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/config.py +0 -0
  24. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/exceptions.py +0 -0
  25. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/explainability.py +0 -0
  26. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/knowledge.py +0 -0
  27. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/library.py +0 -0
  28. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/metrics.py +0 -0
  29. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/api/types.py +0 -0
  30. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/__init__.py +0 -0
  31. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/agent_client.py +0 -0
  32. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/agent_service.py +0 -0
  33. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/async_processor.py +0 -0
  34. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/backend.py +0 -0
  35. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/cassandra_config.py +0 -0
  36. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/chunking_service.py +0 -0
  37. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/collection_config_handler.py +0 -0
  38. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/consumer.py +0 -0
  39. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/consumer_spec.py +0 -0
  40. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/document_embeddings_client.py +0 -0
  41. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/document_embeddings_query_service.py +0 -0
  42. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/document_embeddings_store_service.py +0 -0
  43. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/dynamic_tool_service.py +0 -0
  44. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/embeddings_client.py +0 -0
  45. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/embeddings_service.py +0 -0
  46. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/flow.py +0 -0
  47. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/flow_processor.py +0 -0
  48. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/graph_embeddings_client.py +0 -0
  49. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/graph_embeddings_query_service.py +0 -0
  50. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/graph_embeddings_store_service.py +0 -0
  51. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/graph_rag_client.py +0 -0
  52. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/librarian_client.py +0 -0
  53. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/llm_service.py +0 -0
  54. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/logging.py +0 -0
  55. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/metrics.py +0 -0
  56. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/parameter_spec.py +0 -0
  57. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/producer.py +0 -0
  58. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/producer_spec.py +0 -0
  59. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/prompt_client.py +0 -0
  60. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/publisher.py +0 -0
  61. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/pubsub.py +0 -0
  62. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/pulsar_backend.py +0 -0
  63. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/rabbitmq_backend.py +0 -0
  64. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/request_response_spec.py +0 -0
  65. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/row_embeddings_query_client.py +0 -0
  66. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/serialization.py +0 -0
  67. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/spec.py +0 -0
  68. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/structured_query_client.py +0 -0
  69. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/subscriber.py +0 -0
  70. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/subscriber_spec.py +0 -0
  71. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/text_completion_client.py +0 -0
  72. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/tool_client.py +0 -0
  73. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/tool_service.py +0 -0
  74. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/tool_service_client.py +0 -0
  75. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/triples_client.py +0 -0
  76. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/triples_query_service.py +0 -0
  77. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/base/triples_store_service.py +0 -0
  78. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/__init__.py +0 -0
  79. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/agent_client.py +0 -0
  80. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/base.py +0 -0
  81. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/config_client.py +0 -0
  82. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/document_embeddings_client.py +0 -0
  83. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/document_rag_client.py +0 -0
  84. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/embeddings_client.py +0 -0
  85. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/graph_embeddings_client.py +0 -0
  86. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/graph_rag_client.py +0 -0
  87. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/llm_client.py +0 -0
  88. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/prompt_client.py +0 -0
  89. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/row_embeddings_client.py +0 -0
  90. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/clients/triples_query_client.py +0 -0
  91. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/exceptions.py +0 -0
  92. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/knowledge/__init__.py +0 -0
  93. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/knowledge/defs.py +0 -0
  94. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/knowledge/document.py +0 -0
  95. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/knowledge/identifier.py +0 -0
  96. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/knowledge/organization.py +0 -0
  97. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/knowledge/publication.py +0 -0
  98. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/log_level.py +0 -0
  99. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/registry.py +0 -0
  100. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/__init__.py +0 -0
  101. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/agent.py +0 -0
  102. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/base.py +0 -0
  103. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/collection.py +0 -0
  104. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/config.py +0 -0
  105. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/diagnosis.py +0 -0
  106. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/document_loading.py +0 -0
  107. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/embeddings.py +0 -0
  108. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/embeddings_query.py +0 -0
  109. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/flow.py +0 -0
  110. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/knowledge.py +0 -0
  111. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/library.py +0 -0
  112. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/metadata.py +0 -0
  113. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/nlp_query.py +0 -0
  114. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/primitives.py +0 -0
  115. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/prompt.py +0 -0
  116. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/retrieval.py +0 -0
  117. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/rows_query.py +0 -0
  118. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/structured_query.py +0 -0
  119. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/text_completion.py +0 -0
  120. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/tool.py +0 -0
  121. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/messaging/translators/triples.py +0 -0
  122. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/objects/__init__.py +0 -0
  123. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/objects/field.py +0 -0
  124. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/objects/object.py +0 -0
  125. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/provenance/__init__.py +0 -0
  126. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/provenance/agent.py +0 -0
  127. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/provenance/namespaces.py +0 -0
  128. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/provenance/triples.py +0 -0
  129. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/provenance/uris.py +0 -0
  130. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/provenance/vocabulary.py +0 -0
  131. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/rdf.py +0 -0
  132. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/__init__.py +0 -0
  133. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/core/__init__.py +0 -0
  134. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/core/metadata.py +0 -0
  135. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/core/primitives.py +0 -0
  136. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/core/topic.py +0 -0
  137. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/knowledge/__init__.py +0 -0
  138. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/knowledge/document.py +0 -0
  139. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/knowledge/embeddings.py +0 -0
  140. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/knowledge/graph.py +0 -0
  141. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/knowledge/knowledge.py +0 -0
  142. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/knowledge/nlp.py +0 -0
  143. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/knowledge/object.py +0 -0
  144. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/knowledge/rows.py +0 -0
  145. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/knowledge/structured.py +0 -0
  146. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/agent.py +0 -0
  147. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/collection.py +0 -0
  148. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/config.py +0 -0
  149. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/diagnosis.py +0 -0
  150. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/flow.py +0 -0
  151. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/library.py +0 -0
  152. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/llm.py +0 -0
  153. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/lookup.py +0 -0
  154. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/nlp_query.py +0 -0
  155. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/prompt.py +0 -0
  156. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/query.py +0 -0
  157. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/retrieval.py +0 -0
  158. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/rows_query.py +0 -0
  159. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/storage.py +0 -0
  160. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/structured_query.py +0 -0
  161. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph/schema/services/tool_service.py +0 -0
  162. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph_base.egg-info/dependency_links.txt +0 -0
  163. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph_base.egg-info/requires.txt +0 -0
  164. {trustgraph_base-2.2.16 → trustgraph_base-2.2.17}/trustgraph_base.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trustgraph-base
3
- Version: 2.2.16
3
+ Version: 2.2.17
4
4
  Summary: TrustGraph provides a means to run a pipeline of flexible AI processing components in a flexible means to achieve a processing pipeline.
5
5
  Author-email: "trustgraph.ai" <security@trustgraph.ai>
6
6
  Project-URL: Homepage, https://github.com/trustgraph-ai/trustgraph
@@ -1122,6 +1122,45 @@ class FlowInstance:
1122
1122
 
1123
1123
  return result
1124
1124
 
1125
+ def sparql_query(
1126
+ self, query, user="trustgraph", collection="default",
1127
+ limit=10000
1128
+ ):
1129
+ """
1130
+ Execute a SPARQL query against the knowledge graph.
1131
+
1132
+ Args:
1133
+ query: SPARQL 1.1 query string
1134
+ user: User/keyspace identifier (default: "trustgraph")
1135
+ collection: Collection identifier (default: "default")
1136
+ limit: Safety limit on results (default: 10000)
1137
+
1138
+ Returns:
1139
+ dict with query results. Structure depends on query type:
1140
+ - SELECT: {"query-type": "select", "variables": [...], "bindings": [...]}
1141
+ - ASK: {"query-type": "ask", "ask-result": bool}
1142
+ - CONSTRUCT/DESCRIBE: {"query-type": "construct", "triples": [...]}
1143
+
1144
+ Raises:
1145
+ ProtocolException: If an error occurs
1146
+ """
1147
+
1148
+ input = {
1149
+ "query": query,
1150
+ "user": user,
1151
+ "collection": collection,
1152
+ "limit": limit,
1153
+ }
1154
+
1155
+ response = self.request("service/sparql", input)
1156
+
1157
+ if "error" in response and response["error"]:
1158
+ error_type = response["error"].get("type", "unknown")
1159
+ error_message = response["error"].get("message", "Unknown error")
1160
+ raise ProtocolException(f"{error_type}: {error_message}")
1161
+
1162
+ return response
1163
+
1125
1164
  def nlp_query(self, question, max_results=100):
1126
1165
  """
1127
1166
  Convert a natural language question to a GraphQL query.
@@ -812,6 +812,31 @@ class SocketFlowInstance:
812
812
  else:
813
813
  yield response
814
814
 
815
+ def sparql_query_stream(
816
+ self,
817
+ query: str,
818
+ user: str = "trustgraph",
819
+ collection: str = "default",
820
+ limit: int = 10000,
821
+ batch_size: int = 20,
822
+ **kwargs: Any
823
+ ) -> Iterator[Dict[str, Any]]:
824
+ """Execute a SPARQL query with streaming batches."""
825
+ request = {
826
+ "query": query,
827
+ "user": user,
828
+ "collection": collection,
829
+ "limit": limit,
830
+ "streaming": True,
831
+ "batch-size": batch_size,
832
+ }
833
+ request.update(kwargs)
834
+
835
+ for response in self.client._send_request_sync(
836
+ "sparql", self.flow_id, request, streaming_raw=True
837
+ ):
838
+ yield response
839
+
815
840
  def rows_query(
816
841
  self,
817
842
  query: str,
@@ -0,0 +1 @@
1
+ __version__ = "2.2.17"
@@ -27,6 +27,7 @@ from .translators.nlp_query import QuestionToStructuredQueryRequestTranslator, Q
27
27
  from .translators.structured_query import StructuredQueryRequestTranslator, StructuredQueryResponseTranslator
28
28
  from .translators.diagnosis import StructuredDataDiagnosisRequestTranslator, StructuredDataDiagnosisResponseTranslator
29
29
  from .translators.collection import CollectionManagementRequestTranslator, CollectionManagementResponseTranslator
30
+ from .translators.sparql_query import SparqlQueryRequestTranslator, SparqlQueryResponseTranslator
30
31
 
31
32
  # Register all service translators
32
33
  TranslatorRegistry.register_service(
@@ -149,6 +150,12 @@ TranslatorRegistry.register_service(
149
150
  CollectionManagementResponseTranslator()
150
151
  )
151
152
 
153
+ TranslatorRegistry.register_service(
154
+ "sparql-query",
155
+ SparqlQueryRequestTranslator(),
156
+ SparqlQueryResponseTranslator()
157
+ )
158
+
152
159
  # Register single-direction translators for document loading
153
160
  TranslatorRegistry.register_request("document", DocumentTranslator())
154
161
  TranslatorRegistry.register_request("text-document", TextDocumentTranslator())
@@ -0,0 +1,115 @@
1
+ from typing import Dict, Any, Tuple
2
+ from ...schema import (
3
+ SparqlQueryRequest, SparqlQueryResponse, SparqlBinding,
4
+ Error, Term, Triple, IRI, LITERAL, BLANK,
5
+ )
6
+ from .base import MessageTranslator
7
+ from .primitives import TermTranslator, TripleTranslator
8
+
9
+
10
+ class SparqlQueryRequestTranslator(MessageTranslator):
11
+ """Translator for SparqlQueryRequest schema objects."""
12
+
13
+ def decode(self, data: Dict[str, Any]) -> SparqlQueryRequest:
14
+ return SparqlQueryRequest(
15
+ user=data.get("user", "trustgraph"),
16
+ collection=data.get("collection", "default"),
17
+ query=data.get("query", ""),
18
+ limit=int(data.get("limit", 10000)),
19
+ streaming=data.get("streaming", False),
20
+ batch_size=int(data.get("batch-size", 20)),
21
+ )
22
+
23
+ def encode(self, obj: SparqlQueryRequest) -> Dict[str, Any]:
24
+ return {
25
+ "user": obj.user,
26
+ "collection": obj.collection,
27
+ "query": obj.query,
28
+ "limit": obj.limit,
29
+ "streaming": obj.streaming,
30
+ "batch-size": obj.batch_size,
31
+ }
32
+
33
+
34
+ class SparqlQueryResponseTranslator(MessageTranslator):
35
+ """Translator for SparqlQueryResponse schema objects."""
36
+
37
+ def __init__(self):
38
+ self.term_translator = TermTranslator()
39
+ self.triple_translator = TripleTranslator()
40
+
41
+ def decode(self, data: Dict[str, Any]) -> SparqlQueryResponse:
42
+ raise NotImplementedError(
43
+ "Response translation to schema not typically needed"
44
+ )
45
+
46
+ def _encode_term(self, v):
47
+ """Encode a Term, handling both Term objects and dicts from
48
+ pub/sub deserialization."""
49
+ if v is None:
50
+ return None
51
+ if isinstance(v, dict):
52
+ # Reconstruct Term from dict (pub/sub deserializes nested
53
+ # dataclasses as dicts)
54
+ term = Term(
55
+ type=v.get("type", ""),
56
+ iri=v.get("iri", ""),
57
+ id=v.get("id", ""),
58
+ value=v.get("value", ""),
59
+ datatype=v.get("datatype", ""),
60
+ language=v.get("language", ""),
61
+ )
62
+ return self.term_translator.encode(term)
63
+ return self.term_translator.encode(v)
64
+
65
+ def _encode_error(self, error):
66
+ """Encode an Error, handling both Error objects and dicts."""
67
+ if isinstance(error, dict):
68
+ return {
69
+ "type": error.get("type", ""),
70
+ "message": error.get("message", ""),
71
+ }
72
+ return {
73
+ "type": error.type,
74
+ "message": error.message,
75
+ }
76
+
77
+ def encode(self, obj: SparqlQueryResponse) -> Dict[str, Any]:
78
+ result = {
79
+ "query-type": obj.query_type,
80
+ }
81
+
82
+ if obj.error:
83
+ result["error"] = self._encode_error(obj.error)
84
+
85
+ if obj.query_type == "select":
86
+ result["variables"] = obj.variables
87
+ bindings = []
88
+ for binding in obj.bindings:
89
+ # binding may be a SparqlBinding or a dict
90
+ if isinstance(binding, dict):
91
+ values = binding.get("values", [])
92
+ else:
93
+ values = binding.values
94
+ bindings.append({
95
+ "values": [
96
+ self._encode_term(v) for v in values
97
+ ]
98
+ })
99
+ result["bindings"] = bindings
100
+
101
+ elif obj.query_type == "ask":
102
+ result["ask-result"] = obj.ask_result
103
+
104
+ elif obj.query_type in ("construct", "describe"):
105
+ result["triples"] = [
106
+ self.triple_translator.encode(t)
107
+ for t in obj.triples
108
+ ]
109
+
110
+ return result
111
+
112
+ def encode_with_completion(
113
+ self, obj: SparqlQueryResponse
114
+ ) -> Tuple[Dict[str, Any], bool]:
115
+ return self.encode(obj), obj.is_final
@@ -13,4 +13,5 @@ from .rows_query import *
13
13
  from .diagnosis import *
14
14
  from .collection import *
15
15
  from .storage import *
16
- from .tool_service import *
16
+ from .tool_service import *
17
+ from .sparql_query import *
@@ -0,0 +1,44 @@
1
+ from dataclasses import dataclass, field
2
+
3
+ from ..core.primitives import Error, Term, Triple
4
+ from ..core.topic import queue
5
+
6
+ ############################################################################
7
+
8
+ # SPARQL query
9
+
10
+ @dataclass
11
+ class SparqlBinding:
12
+ """A single row of SPARQL SELECT results.
13
+ Values are ordered to match the variables list in SparqlQueryResponse.
14
+ """
15
+ values: list[Term | None] = field(default_factory=list)
16
+
17
+ @dataclass
18
+ class SparqlQueryRequest:
19
+ user: str = ""
20
+ collection: str = ""
21
+ query: str = "" # SPARQL query string
22
+ limit: int = 10000 # Safety limit on results
23
+ streaming: bool = False # Enable streaming mode
24
+ batch_size: int = 20 # Bindings per batch in streaming mode
25
+
26
+ @dataclass
27
+ class SparqlQueryResponse:
28
+ error: Error | None = None
29
+ query_type: str = "" # "select", "ask", "construct", "describe"
30
+
31
+ # For SELECT queries
32
+ variables: list[str] = field(default_factory=list)
33
+ bindings: list[SparqlBinding] = field(default_factory=list)
34
+
35
+ # For ASK queries
36
+ ask_result: bool = False
37
+
38
+ # For CONSTRUCT/DESCRIBE queries
39
+ triples: list[Triple] = field(default_factory=list)
40
+
41
+ is_final: bool = True # False for intermediate batches in streaming
42
+
43
+ sparql_query_request_queue = queue('sparql-query', cls='request')
44
+ sparql_query_response_queue = queue('sparql-query', cls='response')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: trustgraph-base
3
- Version: 2.2.16
3
+ Version: 2.2.17
4
4
  Summary: TrustGraph provides a means to run a pipeline of flexible AI processing components in a flexible means to achieve a processing pipeline.
5
5
  Author-email: "trustgraph.ai" <security@trustgraph.ai>
6
6
  Project-URL: Homepage, https://github.com/trustgraph-ai/trustgraph
@@ -108,6 +108,7 @@ trustgraph/messaging/translators/primitives.py
108
108
  trustgraph/messaging/translators/prompt.py
109
109
  trustgraph/messaging/translators/retrieval.py
110
110
  trustgraph/messaging/translators/rows_query.py
111
+ trustgraph/messaging/translators/sparql_query.py
111
112
  trustgraph/messaging/translators/structured_query.py
112
113
  trustgraph/messaging/translators/text_completion.py
113
114
  trustgraph/messaging/translators/tool.py
@@ -149,6 +150,7 @@ trustgraph/schema/services/prompt.py
149
150
  trustgraph/schema/services/query.py
150
151
  trustgraph/schema/services/retrieval.py
151
152
  trustgraph/schema/services/rows_query.py
153
+ trustgraph/schema/services/sparql_query.py
152
154
  trustgraph/schema/services/storage.py
153
155
  trustgraph/schema/services/structured_query.py
154
156
  trustgraph/schema/services/tool_service.py
@@ -1 +0,0 @@
1
- __version__ = "2.2.16"