Ensimmäinen graafikysely
Graph Query gq/1.3 säilyttää Diffbot DQL:stä tutun tiiviin, entiteettityypistä alkavan muodon ja lisää vakaan AST:n, ontologiavalidoinnin, parametrit, explain-suunnitelmat ja rajatun suorituksen. Jokainen kysely alkaa type:EntityType-lauseella. Vierekkäisten ehtojen välissä on implisiittinen AND.
type:Organization location.country:"FI" employees>=100 sort:-employees return:entities,evidence limit:25Syntaksiviite
| Lause | Merkitys |
|---|---|
| type:Organization | Pakollinen entiteettityyppi |
| field:"value" · field="value" | Sisältää · täsmällinen yhtäsuuruus |
| field!=value · > · >= · < · <= | Tyypitetyt vertailut |
| AND · OR · NOT · ( ) | Sisäkkäiset Boolen predikaatit; vierekkäiset ehdot ovat AND |
| field:any(a,b) · all(a,b) · none(a,b) | Taulukko- ja moniarvohaku |
| text:"hakufraasi" | Full-text-haku identiteetistä ja ominaisuuksista |
| has:field.path · missing:field.path | Olemassaolon ja puuttumisen testit |
| sort:-employees,+label | Deterministinen monikenttäjärjestys |
| select:businessId,employees | Ominaisuuksien projektio; identiteettikentät säilyvät |
| facet:industry,location.country | Arvojakauma ennen sivutusta, enintään viisi kenttää |
| after:gqc_25 · limit:25 | Cursor-sivutus; enintään 100 entiteettiä |
| relation:subsidiary_of · direction:both · depth<=2 | Rajattu suhdekulku, enintään neljä askelta |
| return:entities,relationships,evidence | Palautettavat graafikerrokset |
Boolen ehdot, taulukot, aika ja ontologia
Käytä sisäkkäisiä AND/OR/NOT-ryhmiä predikaatteihin ja any(), all() tai none() -lausekkeita moniarvoisiin kenttiin. ISO-aikaleimat toimivat järjestysvertailuissa. target.* rajaa kulun kohteita ja relationship.* suhdefaktoja. Entiteetit, kenttäkyvykkyydet ja suhteet validoidaan ontologiaa vasten; tuntematon kenttä palauttaa ehdotuksen.
type:Organization (industry:"Logistics" OR employees>=500) AND NOT missing:businessId aliases:any("Northstar","Polar Freight") observedAt>="2026-08-01T00:00:00Z"Sido epäluotetut arvot parametreina
Viittaa nimettyyn arvoon muodossa $name ja lähetä se GraphQueryInput.parameters-objektissa. Tyypitettyä arvoa ei jäsennetä uudelleen kyselysyntaksina, joten SDK-kutsujan ei tarvitse yhdistellä käyttäjän syötettä merkkijonoon. Validointi, explain ja suoritus ratkaisevat parametrit samalla tavalla.
{
"query": "type:Organization location.country:$country employees>=$minimum",
"parameters": { "country": "FI", "minimum": 100 }
}Fasetoi, projektoi, järjestä ja sivuta
facet laskee enintään 100 arvokoria koko suodatetusta juurijoukosta ennen sivutusta. select rajaa ominaisuudet poistamatta vakaita id-, type-, label- tai evidence_ids-kenttiä. Monikenttäjärjestys on deterministinen, ja vastauksen page.next_cursor annetaan seuraavan API-kutsun cursor-kentässä tai kielen after:-lauseessa.
type:Organization location.country:"FI" facet:industry select:businessId,employees,industry sort:-employees,+label limit:25Kulje suhteita turvallisesti
Suhdekulku pyydetään erikseen ja se on aina rajattu. direction ja depth ovat sallittuja vain relation-lauseen kanssa. Kysely voi kulkea enintään neljä askelta, joten vahingossa syntyvä rajaamaton graafihaku estyy.
type:Organization businessId="3391028-4" relation:subsidiary_of direction:out depth<=2 target.location.country:"FI" relationship.confidence>=0.9 return:entities,relationships,evidenceSelitä ennen suoritusta
POST /v1/graph/query/validate tarkistaa syntaksin ja ontologian. POST /v1/graph/query/explain palauttaa suunnitelman, indeksit, varoitukset, tulosmäärän ja krediittiarvion suorittamatta kyselyä. POST /v1/graph/query suorittaa saman lausekkeen graph:read-oikeudella.
curl -X POST https://api.enrich.nordicdevhouse.com/v1/graph/query \
-H "Authorization: Bearer enrich_live_••••••••" \
-H "Content-Type: application/json" \
-d '{"query":"type:Organization location.country:\"FI\" employees>=100 return:entities,evidence"}'Julkaise claimit muuttumattomana workspace-versiona
POST /v1/graph/publications vastaanottaa idempotentin entiteetti-, suhde- ja evidence-claimien erän graph:write-oikeudella. Koko erästä syntyy yksi sisältöosoitteinen versio, joten lukija ei koskaan näe puoliksi julkaistua graafia. Anna expected_parent_release_id, kun rinnakkainen kirjoittaja ei saa ylikirjoittaa uudempaa aktiivista versiota.
{
"source_id": "crm-import-2026-08-17",
"expected_parent_release_id": "wgr_previous",
"claims": [
{ "entity_id": "organization:3391028-4", "entity_type": "organization", "label": "Northstar Oy", "attribute": "businessId", "value": "3391028-4" }
]
}Tarkista, vertaa ja aktivoi versioita
Listaa tai lue versiot, vertaa mitä tahansa versiota eksplisiittiseen kantaversioon ja aktivoi aiempi versio hallittuna palautuksena. Aktivointi käyttää expected_current_release_id-arvoa optimistiseen lukitukseen ja tallentaa tekijän sekä syyn kanavahistoriaan. Kysely palauttaa aina käyttämänsä workspace_graph_release_id:n.
Erota metadata muuttumattomista artefakteista
Tuotanto tallentaa workspace-kanavat, idempotenssiavaimet, ingestion-tilan, ontologiat ja tapahtumat PostgreSQL:ään. Sisältöosoitteiset Parquet-versiot tallennetaan S3-yhteensopivaan objektivarastoon ja julkaistaan commit-merkillä. Paikallinen SQLite- ja tiedostoadapteri toteuttaa saman rajan kehityksessä.
Käsittele vain muuttuneet lähdetietueet
Luo lähde määrittämällä connector, entiteettityyppi, tunniste- ja nimikenttä sekä kenttäkartta. Vakaa source_event_id tekee ajon uudelleenyrityksestä turvallisen, ja ajo voidaan suorittaa inline-tilassa tai kestävän worker-jonon kautta. Tietuekohtainen sormenjälki ohittaa muuttumattoman datan, hylätty lease otetaan uudelleen käsittelyyn ja virheelliset rivit siirtyvät dead-letter-listaan korjattavaa uudelleenyritystä varten.
Suunnittele release-kohtaisilla indekseillä
Kyselymoottori leikkaa tyyppi-, tarkka arvo-, olemassaolo- ja full-text-indeksit ennen fallback-ehtojen arviointia. Kandidaatti- ja aikabudjetit katkaisevat liian kalliin suunnitelman, LRU-välimuisti nopeuttaa toistot ja jokainen vastaus raportoi indeksit, kandidaatit, arvioidut tietueet, cache-tilan, fallbackit ja suoritusajan.
Skaalaa luvut kustannustilastoilla, shardeilla ja query-workereilla
Jokainen graafiversio sisältää query-projection/2-artefaktin. Rajattu paikallinen LRU-välimuisti säilyttää immutable-projektioita, ja pysyvät workspace-shardit jakavat artefaktit sekä kestävät kyselytyöt. Explain käyttää kenttien kardinaliteetteja ja relaatioiden astelukuja fanoutin, relaatiohakujen, työmuistin ja suoritusluokan arviointiin. Query-workerit heartbeattaavat leaset, yrittävät virheet uudelleen backoffilla, näyttävät dead letterit ja tukevat peruutusta sekä operaattorin retrytä.
Validoi workspacen ontologia ennen aktivointia
Luo muuttumaton luonnos, validoi yhteensopivuus ja vaikutus nykyiseen dataan ja aktivoi vasta sitten. Hallittu migraatio nimeää olemassa olevat attribuutit uudelleen, ja export/import siirtää skeeman workspacejen välillä. Rikkova tai dataan vaikuttava aktivointi palauttaa 409:n ilman eksplisiittistä lupaa.
Kuluta tapahtumia ja release-deltoja
Listaa append-only-graafitapahtumat cursorilla tai kuluta sama järjestys SSE-virtana. Tapahtumatilaukset muodostavat täsmäävistä muutoksista kestävän webhook-outboxin. Eräkuluttaja voi viedä NDJSON-deltan eksplisiittisestä kantaversiosta kohdeversioon ja jatkaa ilman koko graafin uudelleenrakennusta.
Sama sopimus jokaisessa SDK:ssa
Generoidut klientit tarjoavat metodit queryKnowledgeGraph, validateKnowledgeGraphQuery ja explainKnowledgeGraphQuery. Kaikki käyttävät samaa GraphQueryInput-mallia, joten kysely ja kustannussuunnitelma toimivat samalla tavalla kaikissa kielissä.
const graphApi = new KnowledgeGraphApi(configuration);
const result = await graphApi.queryKnowledgeGraph({
graphQueryInput: {
query: 'type:Organization location.country:$country employees>=100 facet:industry return:entities,evidence',
parameters: { country: 'FI' }
}
});Näyttö pysyy eksplisiittisenä
Pyydä evidence vain, kun kutsuja tarvitsee alkuperätiedot. Entiteetit ja suhteet sisältävät evidence_ids-tunnisteet, jotka vastauksen evidence-taulukko ratkaisee lähteeksi, havaintoajaksi ja URL-osoitteeksi. Luottamusarvo ei muuta tarkistamatonta suhdetta hyväksytyksi faktaksi.
Rajat ja virheet
Kyselyssä voi olla enintään 2 000 merkkiä, 25 suodatinta, 100 palautettavaa entiteettiä ja neljä suhdeaskelta. Virheellinen lauseke palauttaa vakaan virhekoodin ja merkkipaikan. Tuntematon kenttä hylätään ontologiavalidoinnissa ja lähellä oleva kenttä ehdotetaan.