SDK Reference¶
Python client for the Graffold Knowledge Graph API.
Installation¶
GraffoldClient (Sync)¶
AsyncGraffoldClient (Async)¶
async with AsyncGraffoldClient("http://localhost:8000", token="...") as client:
result = await client.search("TP53 role in cancer")
Methods¶
| Method | Endpoint | Description |
|---|---|---|
client.ingest(entities, relationships) |
POST /v1/ingest |
Publish entities to KG |
client.search(query, mode="smart") |
POST /v1/search/{mode} |
Auto-routed search |
client.search_global(query) |
POST /v1/search/global |
Community map-reduce |
client.search_drift(query) |
POST /v1/search/drift |
Multi-hop reasoning |
client.search_contradictions(query) |
POST /v1/search/contradictions |
Evidence conflicts |
client.retrieve(query) |
POST /v1/retrieve |
Fast graph retrieval |
client.resolve(entities) |
POST /v1/resolve |
Entity → canonical ID |
client.coverage(entities) |
GET /v1/atlas/entity-coverage |
Check KG coverage |
client.validate_targets(targets) |
POST /v1/atlas/validate-targets |
GNN validation |
client.evidence_for_claim(s, p, o) |
GET /v1/atlas/evidence-for-claim |
Ranked evidence |
client.record_decision(...) |
POST /v1/atlas/record-decision |
Decision trace |
client.similar_decisions(query) |
GET /v1/atlas/similar-decisions |
Cross-session learning |
client.export_parquet(dir) |
POST /v1/export/parquet |
Export to Parquet |
client.import_parquet(dir) |
POST /v1/import/parquet |
Import from Parquet |
client.detect_communities() |
POST /v1/communities |
Community detection |
Examples¶
Ingest¶
client.ingest(
entities=[
{"name": "TP53", "type": "GENE"},
{"name": "MDM2", "type": "PROTEIN"},
],
relationships=[
{"source": "TP53", "target": "MDM2", "type": "INHIBITS",
"properties": {"evidence_level": "rct"}},
],
resolve_entities=True,
)
Search¶
# Smart (auto-routes)
client.search("What kinases are involved in apoptosis?")
# Specific modes
client.search_global("Main themes in oncology research")
client.search_drift("How does PI3K/AKT affect autophagy?", max_hops=5)
client.search_contradictions("Does metformin help or hurt in cancer?")
Entity Resolution¶
result = client.resolve([
{"name": "p53"},
{"name": "breast cancer"},
{"name": "imatinib"},
])
# resolved: [
# {canonical_id: "P04637", source: "uniprot"},
# {canonical_id: "MONDO:0007254", source: "mondo"},
# {canonical_id: "5291", source: "pubchem"},
# ]