TrustGraph Triples Query API
This is a service which queries the knowledge graph for triples (“facts”).
Request/response
Request
The request contains the following fields:
s
: Optional, if included specifies a match for the subject part of a triple.p
: Optional, if included specifies a match for the subject part of a triple.o
: Optional, if included specifies a match for the subject part of a triple.limit
: Optional, if included specifies the maximum number of triples to return. If not specified, an arbitrary value is used.
Returned triples will match all of s
, p
and o
where provided.
Response
The response contains the following fields:
response
: A list of triples.
Each triple contains s
, p
and o
fields describing the subject, predicate and object part of each triple.
Each triple element uses the same schema:
value
: the entity URI or literal value depending on whether this is graph entity or literal value.is_uri
: A boolean value which is true if this is a graph entity i.e.value
is a URI, not a literal value.
Data Format Details
Triple Element Format
To reduce the size of JSON messages, triple elements (subject, predicate, object) are encoded using a compact format:
v
: The value as a string (maps tovalue
in the full schema)e
: Boolean indicating if this is an entity/URI (maps tois_uri
in the full schema)
Each triple element (s
, p
, o
) contains:
v
: The actual value as a stringe
: Boolean indicating the value typetrue
: The value is a URI/entity (e.g.,"http://example.com/Person1"
)false
: The value is a literal (e.g.,"John Doe"
,"42"
,"2023-01-01"
)
Examples
URI/Entity Element:
{
"v": "http://trustgraph.ai/e/space-station-modules",
"e": true
}
Literal Element:
{
"v": "space station modules",
"e": false
}
Numeric Literal:
{
"v": "42",
"e": false
}
REST service
The REST service accepts a request object containing the s
, p
, o
and limit
fields. The response is a JSON object containing the response
field.
e.g.
This example query matches triples with a subject of http://trustgraph.ai/e/space-station-modules
and a predicate of http://www.w3.org/2000/01/rdf-schema#label
. This predicate represents the RDF schema ‘label’ relationship.
The response is a single triple - the o
element contains the literal “space station modules” which is the label for http://trustgraph.ai/e/space-station-modules
.
Request:
{
"id": "qgzw1287vfjc8wsk-4",
"service": "triples-query",
"flow": "default",
"request": {
"s": {
"v": "http://trustgraph.ai/e/space-station-modules",
"e": true
},
"p": {
"v": "http://www.w3.org/2000/01/rdf-schema#label",
"e": true
},
"limit": 5
}
}
Response:
{
"response": [
{
"s": {
"v": "http://trustgraph.ai/e/space-station-modules",
"e": true
},
"p": {
"v": "http://www.w3.org/2000/01/rdf-schema#label",
"e": true
},
"o": {
"v": "space station modules",
"e": false
}
}
]
}
Websocket
Requests have a request
object containing the query fields (s
, p
, o
, limit
). Responses have a response
object containing response
field.
e.g.
Request:
{
"id": "qgzw1287vfjc8wsk-4",
"service": "triples-query",
"request": {
"s": {
"v": "http://trustgraph.ai/e/space-station-modules",
"e": true
},
"p": {
"v": "http://www.w3.org/2000/01/rdf-schema#label",
"e": true
},
"limit": 5
}
}
Responses:
{
"id": "qgzw1287vfjc8wsk-4",
"response": {
"response": [
{
"s": {
"v": "http://trustgraph.ai/e/space-station-modules",
"e": true
},
"p": {
"v": "http://www.w3.org/2000/01/rdf-schema#label",
"e": true
},
"o": {
"v": "space station modules",
"e": false
}
}
]
},
"complete": true
}
Pulsar
The Pulsar schema for the Triples Query API is defined in Python code here:
https://github.com/trustgraph-ai/trustgraph/blob/master/trustgraph-base/trustgraph/schema/graph.py
Default request queue: non-persistent://tg/request/triples-query
Default response queue: non-persistent://tg/response/triples-query
Request schema: trustgraph.schema.TriplesQueryRequest
Response schema: trustgraph.schema.TriplesQueryResponse
Pulsar Python client
The client class is trustgraph.clients.TriplesQueryClient
https://github.com/trustgraph-ai/trustgraph/blob/master/trustgraph-base/trustgraph/clients/triples_query_client.py