diff --git a/trustgraph-base/trustgraph/schema/core/primitives.py b/trustgraph-base/trustgraph/schema/core/primitives.py index b75a0884..fb85d05c 100644 --- a/trustgraph-base/trustgraph/schema/core/primitives.py +++ b/trustgraph-base/trustgraph/schema/core/primitives.py @@ -17,11 +17,15 @@ class Triple(Record): class Field(Record): name = String() - # int, string, long, bool, float, double + # int, string, long, bool, float, double, timestamp type = String() size = Integer() primary = Boolean() description = String() + # NEW FIELDS for structured data: + required = Boolean() # Whether field is required + enum_values = Array(String()) # For enum type fields + indexed = Boolean() # Whether field should be indexed class RowSchema(Record): name = String() diff --git a/trustgraph-base/trustgraph/schema/knowledge/__init__.py b/trustgraph-base/trustgraph/schema/knowledge/__init__.py index e58e9f25..c51f925f 100644 --- a/trustgraph-base/trustgraph/schema/knowledge/__init__.py +++ b/trustgraph-base/trustgraph/schema/knowledge/__init__.py @@ -3,4 +3,6 @@ from .document import * from .embeddings import * from .knowledge import * from .nlp import * -from .rows import * \ No newline at end of file +from .rows import * +from .structured import * +from .extraction import * \ No newline at end of file diff --git a/trustgraph-base/trustgraph/schema/knowledge/embeddings.py b/trustgraph-base/trustgraph/schema/knowledge/embeddings.py index c1b55eba..cfdae068 100644 --- a/trustgraph-base/trustgraph/schema/knowledge/embeddings.py +++ b/trustgraph-base/trustgraph/schema/knowledge/embeddings.py @@ -40,4 +40,17 @@ class ObjectEmbeddings(Record): vectors = Array(Array(Double())) name = String() key_name = String() - id = String() \ No newline at end of file + id = String() + +############################################################################ + +# Structured object embeddings with enhanced capabilities + +class StructuredObjectEmbedding(Record): + metadata = Metadata() + vectors = Array(Array(Double())) + schema_name = String() + object_id = String() # Primary key value + field_embeddings = Map(Array(Double())) # Per-field embeddings + +############################################################################ \ No newline at end of file diff --git a/trustgraph-base/trustgraph/schema/knowledge/extraction.py b/trustgraph-base/trustgraph/schema/knowledge/extraction.py new file mode 100644 index 00000000..1929edc0 --- /dev/null +++ b/trustgraph-base/trustgraph/schema/knowledge/extraction.py @@ -0,0 +1,17 @@ +from pulsar.schema import Record, String, Map, Double + +from ..core.metadata import Metadata +from ..core.topic import topic + +############################################################################ + +# Extracted object from text processing + +class ExtractedObject(Record): + metadata = Metadata() + schema_name = String() # Which schema this object belongs to + values = Map(String()) # Field name -> value + confidence = Double() + source_span = String() # Text span where object was found + +############################################################################ \ No newline at end of file diff --git a/trustgraph-base/trustgraph/schema/knowledge/structured.py b/trustgraph-base/trustgraph/schema/knowledge/structured.py new file mode 100644 index 00000000..3d2b1311 --- /dev/null +++ b/trustgraph-base/trustgraph/schema/knowledge/structured.py @@ -0,0 +1,17 @@ +from pulsar.schema import Record, String, Bytes, Map + +from ..core.metadata import Metadata +from ..core.topic import topic + +############################################################################ + +# Structured data submission for fire-and-forget processing + +class StructuredDataSubmission(Record): + metadata = Metadata() + format = String() # "json", "csv", "xml" + schema_name = String() # Reference to schema in config + data = Bytes() # Raw data to ingest + options = Map(String()) # Format-specific options + +############################################################################ \ No newline at end of file diff --git a/trustgraph-base/trustgraph/schema/services/__init__.py b/trustgraph-base/trustgraph/schema/services/__init__.py index 4fb66b4d..fceb0114 100644 --- a/trustgraph-base/trustgraph/schema/services/__init__.py +++ b/trustgraph-base/trustgraph/schema/services/__init__.py @@ -6,4 +6,6 @@ from .flow import * from .prompt import * from .config import * from .library import * -from .lookup import * \ No newline at end of file +from .lookup import * +from .nlp_query import * +from .structured_query import * \ No newline at end of file diff --git a/trustgraph-base/trustgraph/schema/services/nlp_query.py b/trustgraph-base/trustgraph/schema/services/nlp_query.py new file mode 100644 index 00000000..4e7c20fe --- /dev/null +++ b/trustgraph-base/trustgraph/schema/services/nlp_query.py @@ -0,0 +1,22 @@ +from pulsar.schema import Record, String, Array, Map, Integer, Double + +from ..core.primitives import Error +from ..core.topic import topic + +############################################################################ + +# NLP to Structured Query Service - converts natural language to GraphQL + +class NLPToStructuredQueryRequest(Record): + natural_language_query = String() + max_results = Integer() + context_hints = Map(String()) # Optional context for query generation + +class NLPToStructuredQueryResponse(Record): + error = Error() + graphql_query = String() # Generated GraphQL query + variables = Map(String()) # GraphQL variables if any + detected_schemas = Array(String()) # Which schemas the query targets + confidence = Double() + +############################################################################ \ No newline at end of file diff --git a/trustgraph-base/trustgraph/schema/services/structured_query.py b/trustgraph-base/trustgraph/schema/services/structured_query.py new file mode 100644 index 00000000..8d392098 --- /dev/null +++ b/trustgraph-base/trustgraph/schema/services/structured_query.py @@ -0,0 +1,20 @@ +from pulsar.schema import Record, String, Map, Array + +from ..core.primitives import Error +from ..core.topic import topic + +############################################################################ + +# Structured Query Service - executes GraphQL queries + +class StructuredQueryRequest(Record): + query = String() # GraphQL query + variables = Map(String()) # GraphQL variables + operation_name = String() # Optional operation name for multi-operation documents + +class StructuredQueryResponse(Record): + error = Error() + data = String() # JSON-encoded GraphQL response data + errors = Array(String()) # GraphQL errors if any + +############################################################################ \ No newline at end of file