mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-23 04:01:02 +02:00
Fixing tests
This commit is contained in:
parent
7ef8ca6ac5
commit
c071f35563
6 changed files with 107 additions and 68 deletions
|
|
@ -7,7 +7,7 @@ from unittest.mock import MagicMock, patch, call
|
||||||
|
|
||||||
from trustgraph.storage.triples.neo4j.write import Processor as StorageProcessor
|
from trustgraph.storage.triples.neo4j.write import Processor as StorageProcessor
|
||||||
from trustgraph.query.triples.neo4j.service import Processor as QueryProcessor
|
from trustgraph.query.triples.neo4j.service import Processor as QueryProcessor
|
||||||
from trustgraph.schema import Triples, Triple, Value, Metadata
|
from trustgraph.schema import Triples, Triple, Term, Metadata, IRI, LITERAL
|
||||||
from trustgraph.schema import TriplesQueryRequest
|
from trustgraph.schema import TriplesQueryRequest
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -60,9 +60,9 @@ class TestNeo4jUserCollectionIsolation:
|
||||||
)
|
)
|
||||||
|
|
||||||
triple = Triple(
|
triple = Triple(
|
||||||
s=Value(value="http://example.com/subject", is_uri=True),
|
s=Term(type=IRI, iri="http://example.com/subject"),
|
||||||
p=Value(value="http://example.com/predicate", is_uri=True),
|
p=Term(type=IRI, iri="http://example.com/predicate"),
|
||||||
o=Value(value="literal_value", is_uri=False)
|
o=Term(type=LITERAL, value="literal_value")
|
||||||
)
|
)
|
||||||
|
|
||||||
message = Triples(
|
message = Triples(
|
||||||
|
|
@ -128,9 +128,9 @@ class TestNeo4jUserCollectionIsolation:
|
||||||
metadata = Metadata(id="test-id")
|
metadata = Metadata(id="test-id")
|
||||||
|
|
||||||
triple = Triple(
|
triple = Triple(
|
||||||
s=Value(value="http://example.com/subject", is_uri=True),
|
s=Term(type=IRI, iri="http://example.com/subject"),
|
||||||
p=Value(value="http://example.com/predicate", is_uri=True),
|
p=Term(type=IRI, iri="http://example.com/predicate"),
|
||||||
o=Value(value="http://example.com/object", is_uri=True)
|
o=Term(type=IRI, iri="http://example.com/object")
|
||||||
)
|
)
|
||||||
|
|
||||||
message = Triples(
|
message = Triples(
|
||||||
|
|
@ -170,8 +170,8 @@ class TestNeo4jUserCollectionIsolation:
|
||||||
query = TriplesQueryRequest(
|
query = TriplesQueryRequest(
|
||||||
user="test_user",
|
user="test_user",
|
||||||
collection="test_collection",
|
collection="test_collection",
|
||||||
s=Value(value="http://example.com/subject", is_uri=True),
|
s=Term(type=IRI, iri="http://example.com/subject"),
|
||||||
p=Value(value="http://example.com/predicate", is_uri=True),
|
p=Term(type=IRI, iri="http://example.com/predicate"),
|
||||||
o=None
|
o=None
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -254,9 +254,9 @@ class TestNeo4jUserCollectionIsolation:
|
||||||
metadata=Metadata(user="user1", collection="coll1"),
|
metadata=Metadata(user="user1", collection="coll1"),
|
||||||
triples=[
|
triples=[
|
||||||
Triple(
|
Triple(
|
||||||
s=Value(value="http://example.com/user1/subject", is_uri=True),
|
s=Term(type=IRI, iri="http://example.com/user1/subject"),
|
||||||
p=Value(value="http://example.com/predicate", is_uri=True),
|
p=Term(type=IRI, iri="http://example.com/predicate"),
|
||||||
o=Value(value="user1_data", is_uri=False)
|
o=Term(type=LITERAL, value="user1_data")
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
@ -265,9 +265,9 @@ class TestNeo4jUserCollectionIsolation:
|
||||||
metadata=Metadata(user="user2", collection="coll2"),
|
metadata=Metadata(user="user2", collection="coll2"),
|
||||||
triples=[
|
triples=[
|
||||||
Triple(
|
Triple(
|
||||||
s=Value(value="http://example.com/user2/subject", is_uri=True),
|
s=Term(type=IRI, iri="http://example.com/user2/subject"),
|
||||||
p=Value(value="http://example.com/predicate", is_uri=True),
|
p=Term(type=IRI, iri="http://example.com/predicate"),
|
||||||
o=Value(value="user2_data", is_uri=False)
|
o=Term(type=LITERAL, value="user2_data")
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
@ -429,9 +429,9 @@ class TestNeo4jUserCollectionRegression:
|
||||||
metadata=Metadata(user="user1", collection="coll1"),
|
metadata=Metadata(user="user1", collection="coll1"),
|
||||||
triples=[
|
triples=[
|
||||||
Triple(
|
Triple(
|
||||||
s=Value(value=shared_uri, is_uri=True),
|
s=Term(type=IRI, iri=shared_uri),
|
||||||
p=Value(value="http://example.com/p", is_uri=True),
|
p=Term(type=IRI, iri="http://example.com/p"),
|
||||||
o=Value(value="user1_value", is_uri=False)
|
o=Term(type=LITERAL, value="user1_value")
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
@ -440,9 +440,9 @@ class TestNeo4jUserCollectionRegression:
|
||||||
metadata=Metadata(user="user2", collection="coll2"),
|
metadata=Metadata(user="user2", collection="coll2"),
|
||||||
triples=[
|
triples=[
|
||||||
Triple(
|
Triple(
|
||||||
s=Value(value=shared_uri, is_uri=True),
|
s=Term(type=IRI, iri=shared_uri),
|
||||||
p=Value(value="http://example.com/p", is_uri=True),
|
p=Term(type=IRI, iri="http://example.com/p"),
|
||||||
o=Value(value="user2_value", is_uri=False)
|
o=Term(type=LITERAL, value="user2_value")
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import pytest
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
from trustgraph.storage.triples.falkordb.write import Processor
|
from trustgraph.storage.triples.falkordb.write import Processor
|
||||||
from trustgraph.schema import Value, Triple
|
from trustgraph.schema import Term, Triple, IRI, LITERAL
|
||||||
|
|
||||||
|
|
||||||
class TestFalkorDBStorageProcessor:
|
class TestFalkorDBStorageProcessor:
|
||||||
|
|
@ -22,9 +22,9 @@ class TestFalkorDBStorageProcessor:
|
||||||
|
|
||||||
# Create a test triple
|
# Create a test triple
|
||||||
triple = Triple(
|
triple = Triple(
|
||||||
s=Value(value='http://example.com/subject', is_uri=True),
|
s=Term(type=IRI, iri='http://example.com/subject'),
|
||||||
p=Value(value='http://example.com/predicate', is_uri=True),
|
p=Term(type=IRI, iri='http://example.com/predicate'),
|
||||||
o=Value(value='literal object', is_uri=False)
|
o=Term(type=LITERAL, value='literal object')
|
||||||
)
|
)
|
||||||
message.triples = [triple]
|
message.triples = [triple]
|
||||||
|
|
||||||
|
|
@ -183,9 +183,9 @@ class TestFalkorDBStorageProcessor:
|
||||||
message.metadata.collection = 'test_collection'
|
message.metadata.collection = 'test_collection'
|
||||||
|
|
||||||
triple = Triple(
|
triple = Triple(
|
||||||
s=Value(value='http://example.com/subject', is_uri=True),
|
s=Term(type=IRI, iri='http://example.com/subject'),
|
||||||
p=Value(value='http://example.com/predicate', is_uri=True),
|
p=Term(type=IRI, iri='http://example.com/predicate'),
|
||||||
o=Value(value='http://example.com/object', is_uri=True)
|
o=Term(type=IRI, iri='http://example.com/object')
|
||||||
)
|
)
|
||||||
message.triples = [triple]
|
message.triples = [triple]
|
||||||
|
|
||||||
|
|
@ -269,14 +269,14 @@ class TestFalkorDBStorageProcessor:
|
||||||
message.metadata.collection = 'test_collection'
|
message.metadata.collection = 'test_collection'
|
||||||
|
|
||||||
triple1 = Triple(
|
triple1 = Triple(
|
||||||
s=Value(value='http://example.com/subject1', is_uri=True),
|
s=Term(type=IRI, iri='http://example.com/subject1'),
|
||||||
p=Value(value='http://example.com/predicate1', is_uri=True),
|
p=Term(type=IRI, iri='http://example.com/predicate1'),
|
||||||
o=Value(value='literal object1', is_uri=False)
|
o=Term(type=LITERAL, value='literal object1')
|
||||||
)
|
)
|
||||||
triple2 = Triple(
|
triple2 = Triple(
|
||||||
s=Value(value='http://example.com/subject2', is_uri=True),
|
s=Term(type=IRI, iri='http://example.com/subject2'),
|
||||||
p=Value(value='http://example.com/predicate2', is_uri=True),
|
p=Term(type=IRI, iri='http://example.com/predicate2'),
|
||||||
o=Value(value='http://example.com/object2', is_uri=True)
|
o=Term(type=IRI, iri='http://example.com/object2')
|
||||||
)
|
)
|
||||||
message.triples = [triple1, triple2]
|
message.triples = [triple1, triple2]
|
||||||
|
|
||||||
|
|
@ -337,14 +337,14 @@ class TestFalkorDBStorageProcessor:
|
||||||
message.metadata.collection = 'test_collection'
|
message.metadata.collection = 'test_collection'
|
||||||
|
|
||||||
triple1 = Triple(
|
triple1 = Triple(
|
||||||
s=Value(value='http://example.com/subject1', is_uri=True),
|
s=Term(type=IRI, iri='http://example.com/subject1'),
|
||||||
p=Value(value='http://example.com/predicate1', is_uri=True),
|
p=Term(type=IRI, iri='http://example.com/predicate1'),
|
||||||
o=Value(value='literal object', is_uri=False)
|
o=Term(type=LITERAL, value='literal object')
|
||||||
)
|
)
|
||||||
triple2 = Triple(
|
triple2 = Triple(
|
||||||
s=Value(value='http://example.com/subject2', is_uri=True),
|
s=Term(type=IRI, iri='http://example.com/subject2'),
|
||||||
p=Value(value='http://example.com/predicate2', is_uri=True),
|
p=Term(type=IRI, iri='http://example.com/predicate2'),
|
||||||
o=Value(value='http://example.com/object2', is_uri=True)
|
o=Term(type=IRI, iri='http://example.com/object2')
|
||||||
)
|
)
|
||||||
message.triples = [triple1, triple2]
|
message.triples = [triple1, triple2]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import pytest
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
from trustgraph.storage.triples.memgraph.write import Processor
|
from trustgraph.storage.triples.memgraph.write import Processor
|
||||||
from trustgraph.schema import Value, Triple
|
from trustgraph.schema import Term, Triple, IRI, LITERAL
|
||||||
|
|
||||||
|
|
||||||
class TestMemgraphStorageProcessor:
|
class TestMemgraphStorageProcessor:
|
||||||
|
|
@ -22,9 +22,9 @@ class TestMemgraphStorageProcessor:
|
||||||
|
|
||||||
# Create a test triple
|
# Create a test triple
|
||||||
triple = Triple(
|
triple = Triple(
|
||||||
s=Value(value='http://example.com/subject', is_uri=True),
|
s=Term(type=IRI, iri='http://example.com/subject'),
|
||||||
p=Value(value='http://example.com/predicate', is_uri=True),
|
p=Term(type=IRI, iri='http://example.com/predicate'),
|
||||||
o=Value(value='literal object', is_uri=False)
|
o=Term(type=LITERAL, value='literal object')
|
||||||
)
|
)
|
||||||
message.triples = [triple]
|
message.triples = [triple]
|
||||||
|
|
||||||
|
|
@ -231,9 +231,9 @@ class TestMemgraphStorageProcessor:
|
||||||
mock_tx = MagicMock()
|
mock_tx = MagicMock()
|
||||||
|
|
||||||
triple = Triple(
|
triple = Triple(
|
||||||
s=Value(value='http://example.com/subject', is_uri=True),
|
s=Term(type=IRI, iri='http://example.com/subject'),
|
||||||
p=Value(value='http://example.com/predicate', is_uri=True),
|
p=Term(type=IRI, iri='http://example.com/predicate'),
|
||||||
o=Value(value='http://example.com/object', is_uri=True)
|
o=Term(type=IRI, iri='http://example.com/object')
|
||||||
)
|
)
|
||||||
|
|
||||||
processor.create_triple(mock_tx, triple, "test_user", "test_collection")
|
processor.create_triple(mock_tx, triple, "test_user", "test_collection")
|
||||||
|
|
@ -265,9 +265,9 @@ class TestMemgraphStorageProcessor:
|
||||||
mock_tx = MagicMock()
|
mock_tx = MagicMock()
|
||||||
|
|
||||||
triple = Triple(
|
triple = Triple(
|
||||||
s=Value(value='http://example.com/subject', is_uri=True),
|
s=Term(type=IRI, iri='http://example.com/subject'),
|
||||||
p=Value(value='http://example.com/predicate', is_uri=True),
|
p=Term(type=IRI, iri='http://example.com/predicate'),
|
||||||
o=Value(value='literal object', is_uri=False)
|
o=Term(type=LITERAL, value='literal object')
|
||||||
)
|
)
|
||||||
|
|
||||||
processor.create_triple(mock_tx, triple, "test_user", "test_collection")
|
processor.create_triple(mock_tx, triple, "test_user", "test_collection")
|
||||||
|
|
@ -347,14 +347,14 @@ class TestMemgraphStorageProcessor:
|
||||||
message.metadata.collection = 'test_collection'
|
message.metadata.collection = 'test_collection'
|
||||||
|
|
||||||
triple1 = Triple(
|
triple1 = Triple(
|
||||||
s=Value(value='http://example.com/subject1', is_uri=True),
|
s=Term(type=IRI, iri='http://example.com/subject1'),
|
||||||
p=Value(value='http://example.com/predicate1', is_uri=True),
|
p=Term(type=IRI, iri='http://example.com/predicate1'),
|
||||||
o=Value(value='literal object1', is_uri=False)
|
o=Term(type=LITERAL, value='literal object1')
|
||||||
)
|
)
|
||||||
triple2 = Triple(
|
triple2 = Triple(
|
||||||
s=Value(value='http://example.com/subject2', is_uri=True),
|
s=Term(type=IRI, iri='http://example.com/subject2'),
|
||||||
p=Value(value='http://example.com/predicate2', is_uri=True),
|
p=Term(type=IRI, iri='http://example.com/predicate2'),
|
||||||
o=Value(value='http://example.com/object2', is_uri=True)
|
o=Term(type=IRI, iri='http://example.com/object2')
|
||||||
)
|
)
|
||||||
message.triples = [triple1, triple2]
|
message.triples = [triple1, triple2]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,12 +15,27 @@ from falkordb import FalkorDB
|
||||||
from .... base import TriplesStoreService, CollectionConfigHandler
|
from .... base import TriplesStoreService, CollectionConfigHandler
|
||||||
from .... base import AsyncProcessor, Consumer, Producer
|
from .... base import AsyncProcessor, Consumer, Producer
|
||||||
from .... base import ConsumerMetrics, ProducerMetrics
|
from .... base import ConsumerMetrics, ProducerMetrics
|
||||||
|
from .... schema import IRI, LITERAL
|
||||||
|
|
||||||
# Module logger
|
# Module logger
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
default_ident = "triples-write"
|
default_ident = "triples-write"
|
||||||
|
|
||||||
|
|
||||||
|
def get_term_value(term):
|
||||||
|
"""Extract the string value from a Term"""
|
||||||
|
if term is None:
|
||||||
|
return None
|
||||||
|
if term.type == IRI:
|
||||||
|
return term.iri
|
||||||
|
elif term.type == LITERAL:
|
||||||
|
return term.value
|
||||||
|
else:
|
||||||
|
# For blank nodes or other types, use id or value
|
||||||
|
return term.id or term.value
|
||||||
|
|
||||||
|
|
||||||
default_graph_url = 'falkor://falkordb:6379'
|
default_graph_url = 'falkor://falkordb:6379'
|
||||||
default_database = 'falkordb'
|
default_database = 'falkordb'
|
||||||
|
|
||||||
|
|
@ -164,14 +179,18 @@ class Processor(CollectionConfigHandler, TriplesStoreService):
|
||||||
|
|
||||||
for t in message.triples:
|
for t in message.triples:
|
||||||
|
|
||||||
self.create_node(t.s.value, user, collection)
|
s_val = get_term_value(t.s)
|
||||||
|
p_val = get_term_value(t.p)
|
||||||
|
o_val = get_term_value(t.o)
|
||||||
|
|
||||||
if t.o.is_uri:
|
self.create_node(s_val, user, collection)
|
||||||
self.create_node(t.o.value, user, collection)
|
|
||||||
self.relate_node(t.s.value, t.p.value, t.o.value, user, collection)
|
if t.o.type == IRI:
|
||||||
|
self.create_node(o_val, user, collection)
|
||||||
|
self.relate_node(s_val, p_val, o_val, user, collection)
|
||||||
else:
|
else:
|
||||||
self.create_literal(t.o.value, user, collection)
|
self.create_literal(o_val, user, collection)
|
||||||
self.relate_literal(t.s.value, t.p.value, t.o.value, user, collection)
|
self.relate_literal(s_val, p_val, o_val, user, collection)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def add_args(parser):
|
def add_args(parser):
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ from neo4j import GraphDatabase
|
||||||
from .... base import TriplesStoreService, CollectionConfigHandler
|
from .... base import TriplesStoreService, CollectionConfigHandler
|
||||||
from .... base import AsyncProcessor, Consumer, Producer
|
from .... base import AsyncProcessor, Consumer, Producer
|
||||||
from .... base import ConsumerMetrics, ProducerMetrics
|
from .... base import ConsumerMetrics, ProducerMetrics
|
||||||
|
from .... schema import IRI, LITERAL
|
||||||
|
|
||||||
# Module logger
|
# Module logger
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
|
||||||
|
|
@ -14,12 +14,27 @@ from neo4j import GraphDatabase
|
||||||
from .... base import TriplesStoreService, CollectionConfigHandler
|
from .... base import TriplesStoreService, CollectionConfigHandler
|
||||||
from .... base import AsyncProcessor, Consumer, Producer
|
from .... base import AsyncProcessor, Consumer, Producer
|
||||||
from .... base import ConsumerMetrics, ProducerMetrics
|
from .... base import ConsumerMetrics, ProducerMetrics
|
||||||
|
from .... schema import IRI, LITERAL
|
||||||
|
|
||||||
# Module logger
|
# Module logger
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
default_ident = "triples-write"
|
default_ident = "triples-write"
|
||||||
|
|
||||||
|
|
||||||
|
def get_term_value(term):
|
||||||
|
"""Extract the string value from a Term"""
|
||||||
|
if term is None:
|
||||||
|
return None
|
||||||
|
if term.type == IRI:
|
||||||
|
return term.iri
|
||||||
|
elif term.type == LITERAL:
|
||||||
|
return term.value
|
||||||
|
else:
|
||||||
|
# For blank nodes or other types, use id or value
|
||||||
|
return term.id or term.value
|
||||||
|
|
||||||
|
|
||||||
default_graph_host = 'bolt://neo4j:7687'
|
default_graph_host = 'bolt://neo4j:7687'
|
||||||
default_username = 'neo4j'
|
default_username = 'neo4j'
|
||||||
default_password = 'password'
|
default_password = 'password'
|
||||||
|
|
@ -212,14 +227,18 @@ class Processor(CollectionConfigHandler, TriplesStoreService):
|
||||||
|
|
||||||
for t in message.triples:
|
for t in message.triples:
|
||||||
|
|
||||||
self.create_node(t.s.value, user, collection)
|
s_val = get_term_value(t.s)
|
||||||
|
p_val = get_term_value(t.p)
|
||||||
|
o_val = get_term_value(t.o)
|
||||||
|
|
||||||
if t.o.is_uri:
|
self.create_node(s_val, user, collection)
|
||||||
self.create_node(t.o.value, user, collection)
|
|
||||||
self.relate_node(t.s.value, t.p.value, t.o.value, user, collection)
|
if t.o.type == IRI:
|
||||||
|
self.create_node(o_val, user, collection)
|
||||||
|
self.relate_node(s_val, p_val, o_val, user, collection)
|
||||||
else:
|
else:
|
||||||
self.create_literal(t.o.value, user, collection)
|
self.create_literal(o_val, user, collection)
|
||||||
self.relate_literal(t.s.value, t.p.value, t.o.value, user, collection)
|
self.relate_literal(s_val, p_val, o_val, user, collection)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def add_args(parser):
|
def add_args(parser):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue