Changed schema for Value -> Term, majorly breaking change (#622)

* Changed schema for Value -> Term, majorly breaking change

* Following the schema change, Value -> Term into all processing

* Updated Cassandra for g, p, s, o index patterns (7 indexes)

* Reviewed and updated all tests

* Neo4j, Memgraph and FalkorDB remain broken, will look at once settled down
This commit is contained in:
cybermaggedon 2026-01-27 13:48:08 +00:00 committed by GitHub
parent e061f2c633
commit cf0daedefa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
86 changed files with 2458 additions and 1764 deletions

View file

@ -1,22 +1,57 @@
from dataclasses import dataclass, field
# Term type constants
IRI = "i" # IRI/URI node
BLANK = "b" # Blank node
LITERAL = "l" # Literal value
TRIPLE = "t" # Quoted triple (RDF-star)
@dataclass
class Error:
type: str = ""
message: str = ""
@dataclass
class Value:
class Term:
"""
RDF Term - can represent an IRI, blank node, literal, or quoted triple.
The 'type' field determines which other fields are relevant:
- IRI: use 'iri' field
- BLANK: use 'id' field
- LITERAL: use 'value', 'datatype', 'language' fields
- TRIPLE: use 'triple' field
"""
type: str = "" # One of: IRI, BLANK, LITERAL, TRIPLE
# For IRI terms (type == IRI)
iri: str = ""
# For blank nodes (type == BLANK)
id: str = ""
# For literals (type == LITERAL)
value: str = ""
is_uri: bool = False
type: str = ""
datatype: str = "" # XSD datatype URI (mutually exclusive with language)
language: str = "" # Language tag (mutually exclusive with datatype)
# For quoted triples (type == TRIPLE)
triple: "Triple | None" = None
@dataclass
class Triple:
s: Value | None = None
p: Value | None = None
o: Value | None = None
"""
RDF Triple / Quad.
The optional 'g' field specifies the named graph (None = default graph).
"""
s: Term | None = None # Subject
p: Term | None = None # Predicate
o: Term | None = None # Object
g: str | None = None # Graph name (IRI), None = default graph
@dataclass
class Field:

View file

@ -1,7 +1,7 @@
from dataclasses import dataclass, field
from ..core.metadata import Metadata
from ..core.primitives import Value, RowSchema
from ..core.primitives import Term, RowSchema
from ..core.topic import topic
############################################################################
@ -10,7 +10,7 @@ from ..core.topic import topic
@dataclass
class EntityEmbeddings:
entity: Value | None = None
entity: Term | None = None
vectors: list[list[float]] = field(default_factory=list)
# This is a 'batching' mechanism for the above data

View file

@ -1,6 +1,6 @@
from dataclasses import dataclass, field
from ..core.primitives import Value, Triple
from ..core.primitives import Term, Triple
from ..core.metadata import Metadata
from ..core.topic import topic
@ -10,7 +10,7 @@ from ..core.topic import topic
@dataclass
class EntityContext:
entity: Value | None = None
entity: Term | None = None
context: str = ""
# This is a 'batching' mechanism for the above data

View file

@ -1,6 +1,6 @@
from dataclasses import dataclass
from ..core.primitives import Error, Value, Triple
from ..core.primitives import Error, Term, Triple
from ..core.topic import topic
from ..core.metadata import Metadata

View file

@ -1,6 +1,6 @@
from dataclasses import dataclass, field
from ..core.primitives import Error, Value, Triple
from ..core.primitives import Error, Term, Triple
from ..core.topic import topic
############################################################################
@ -17,7 +17,7 @@ class GraphEmbeddingsRequest:
@dataclass
class GraphEmbeddingsResponse:
error: Error | None = None
entities: list[Value] = field(default_factory=list)
entities: list[Term] = field(default_factory=list)
############################################################################
@ -27,9 +27,10 @@ class GraphEmbeddingsResponse:
class TriplesQueryRequest:
user: str = ""
collection: str = ""
s: Value | None = None
p: Value | None = None
o: Value | None = None
s: Term | None = None
p: Term | None = None
o: Term | None = None
g: str | None = None # Graph IRI. None=default graph, "*"=all graphs
limit: int = 0
@dataclass

View file

@ -1,6 +1,6 @@
from dataclasses import dataclass
from ..core.topic import topic
from ..core.primitives import Error, Value
from ..core.primitives import Error, Term
############################################################################