API Reference Overview¶
Welcome to the comprehensive API reference for Quantum Entangled Knowledge Graphs (QE-KGR). This documentation provides detailed information about all classes, methods, and functions available in the library.
๐ Module Structure¶
QE-KGR is organized into four main modules:
- qekgr.graphs - Core graph structures and quantum node/edge implementations
- qekgr.reasoning - Quantum inference algorithms and reasoning engines
- qekgr.query - Natural language query processing and entangled search
- qekgr.utils - Visualization tools and utility functions
๐ Quick Import Guide¶
Main Classes¶
# Core imports
from qekgr import EntangledGraph, QuantumInference, EntangledQueryEngine
# Graph components
from qekgr.graphs import QuantumNode, EntangledEdge
# Visualization
from qekgr.utils import QuantumGraphVisualizer
# CLI tools
from qekgr.cli import main as cli_main
Common Usage Patterns¶
# Create and populate graph
graph = EntangledGraph(hilbert_dim=4)
node = graph.add_quantum_node("entity", state="type")
edge = graph.add_entangled_edge("source", "target",
relations=["relates"],
amplitudes=[0.8])
# Reasoning and queries
inference = QuantumInference(graph)
query_engine = EntangledQueryEngine(graph)
# Visualization
visualizer = QuantumGraphVisualizer(graph)
๐ง Configuration Options¶
Global Settings¶
import qekgr
# Set global configuration
qekgr.config.set_default_hilbert_dim(8)
qekgr.config.set_decoherence_rate(0.1)
qekgr.config.set_visualization_theme('quantum')
Environment Variables¶
export QEKGR_DEFAULT_HILBERT_DIM=4
export QEKGR_DECOHERENCE_RATE=0.05
export QEKGR_ENABLE_GPU=true
export QEKGR_CACHE_DIR=/tmp/qekgr_cache
๐ Data Types and Structures¶
Core Data Types¶
| Type | Description | Example |
|---|---|---|
complex128 |
Complex quantum amplitudes | 0.8 + 0.6j |
ndarray |
Quantum state vectors | np.array([1, 0, 0, 0]) |
Dict[str, Any] |
Node/edge metadata | {"type": "person", "age": 30} |
List[str] |
Relation types | ["collaborates", "knows"] |
Tuple[str, str] |
Edge keys | ("Alice", "Bob") |
Return Objects¶
# Quantum walk result
@dataclass
class QuantumWalkResult:
path: List[str]
amplitudes: List[complex]
final_state: np.ndarray
entanglement_trace: List[float]
interference_pattern: np.ndarray
# Query result
@dataclass
class QueryResult:
query: str
answer_nodes: List[str]
answer_edges: List[Tuple[str, str]]
confidence_score: float
quantum_amplitudes: List[complex]
reasoning_path: List[str]
metadata: Dict[str, Any]
โก Performance Considerations¶
Memory Usage¶
# Estimate memory usage
nodes = len(graph.nodes)
hilbert_dim = graph.hilbert_dim
estimated_memory = nodes * hilbert_dim**2 * 16 # bytes for complex128
print(f"Estimated memory: {estimated_memory / 1024**2:.1f} MB")
Optimization Tips¶
- Hilbert Dimension: Start with dim=2-4 for exploration, use 8+ for production
- Batch Operations: Group node/edge additions for efficiency
- Caching: Enable query caching for repeated searches
- GPU Acceleration: Use CUDA-compatible operations when available
๐ Error Handling¶
Common Exceptions¶
from qekgr.exceptions import (
QuantumStateError,
EntanglementError,
GraphStructureError,
QueryParsingError
)
try:
# Quantum operations
graph.add_quantum_node("test", state="invalid_state")
except QuantumStateError as e:
print(f"Invalid quantum state: {e}")
try:
# Entanglement operations
graph.add_entangled_edge("node1", "node2", relations=[], amplitudes=[0.5])
except EntanglementError as e:
print(f"Entanglement error: {e}")
Error Recovery¶
def safe_quantum_operation(func, *args, **kwargs):
"""Safely execute quantum operation with fallback."""
try:
return func(*args, **kwargs)
except QuantumStateError:
# Fallback to default state
return func(*args, state=None, **kwargs)
except EntanglementError:
# Use classical connection
return func(*args, amplitudes=[1.0], **kwargs)
๐งช Testing and Validation¶
Unit Testing¶
import unittest
from qekgr import EntangledGraph
class TestQuantumGraph(unittest.TestCase):
def setUp(self):
self.graph = EntangledGraph(hilbert_dim=4)
def test_node_creation(self):
node = self.graph.add_quantum_node("test", state="physicist")
self.assertIn("test", self.graph.nodes)
self.assertEqual(len(node.state_vector), 4)
def test_entanglement(self):
self.graph.add_quantum_node("A", state="type1")
self.graph.add_quantum_node("B", state="type2")
edge = self.graph.add_entangled_edge("A", "B",
relations=["connects"],
amplitudes=[0.8])
self.assertGreater(edge.entanglement_strength, 0)
if __name__ == '__main__':
unittest.main()
๐ Module Documentation¶
For detailed API documentation of each module, see:
- Graphs Module -
EntangledGraph,QuantumNode,EntangledEdge - Reasoning Module -
QuantumInference, quantum walks, link prediction - Query Module -
EntangledQueryEngine, natural language processing - Visualization Module -
QuantumGraphVisualizer, plotting tools