Knowledge Graph Integration
A research paper is a terrible database. The knowledge it contains - this gene associates with that disease, this compound inhibits that pathway, is locked in prose, findable only by someone who already knows to read that particular paper. The knowledge graph is where the platform puts that information once BioAgents has extracted it, so a question like "what else touches this pathway?" becomes a query instead of a literature review.
What it's built from
RDF triples
The foundation is a Resource Description Framework (RDF) triple store. Every fact is a subject-predicate-object triple:
# Example triple representation
<http://example.org/gene/BRCA1> <http://example.org/relation/associatedWith> <http://example.org/disease/BreastCancer> .JSON-LD
The same knowledge is also available as JSON-LD, which matters for anyone integrating from the web side - it's plain JSON to a client that doesn't care about semantics, and linked data to one that does:
{
"@context": {
"bio": "http://example.org/biology/",
"schema": "http://schema.org/"
},
"@id": "bio:gene/BRCA1",
"@type": "bio:Gene",
"bio:name": "BRCA1",
"bio:associatedWith": {
"@id": "bio:disease/BreastCancer",
"@type": "bio:Disease",
"bio:name": "Breast Cancer"
}
}SPARQL
Queries run through a SPARQL endpoint. If you've not written SPARQL before: it reads like SQL over graph patterns, and the variables bind to anything matching the pattern:
PREFIX bio: <http://example.org/biology/>
SELECT ?gene ?disease WHERE {
?gene bio:associatedWith ?disease .
?disease a bio:Disease .
?disease bio:relatedTo bio:CancerPathway .
}Where it plugs in
How knowledge gets in
Papers don't arrive as triples. The extraction pipeline is described in detail in BioAgents Architecture; the short version is PDF -> sectioned text -> recognized entities and relationships -> RDF. Each extracted fact keeps a link back to the paper (and DID) it came from, so a query result is always traceable to its source.
Querying
SPARQL directly
PREFIX bio: <http://bio-ontology.org/>
SELECT ?gene ?diseaseName WHERE {
?gene bio:associatedWith ?disease .
?disease a bio:Disease ;
bio:name ?diseaseName .
FILTER(CONTAINS(?diseaseName, "Alzheimer"))
}In plain English
You can also skip SPARQL entirely: BioAgents translates natural language questions into graph queries. "What genes are associated with Alzheimer's disease that also interact with the APOE pathway?" becomes the pattern match above, without you writing it.
What this is actually for
The discovery case is obvious - find related work you didn't know existed. The more interesting one is hypothesis generation: because the graph makes gaps visible (two entities heavily connected to a third but never studied together), BioAgents can propose connections worth testing, rank them by plausibility, and cite the evidence that suggested them. Whether a proposed connection is real is still the researcher's job - the graph just makes the candidates enumerable.
Finally, the graph is a junction point. Papers, experimental results, external databases, clinical data, and genomic information all land in the same triple space, which is what lets a single query span sources that were never designed to talk to each other.