What are the different ways to query the graph?

What are the different ways to query the graph?
Tagged:

Best Answer

  • Tomasz Adamusiak
    Answer ✓

    1. /entity/analyze

    POST /entity/analyze/search

    searches at the level you specified. So if you have graphs

    A -> B -> C

    and

    A -> X -> Y -> C

    level=2 finds A, B, C

    but level=3 only finds A, X, Y, C (not `B`)

    Searching at a lower level is quicker.

    You can specify how many results you want for each level with the rowsPerLevel parameter.

    2. /entity/search

    As an alternative to analyze/search you can get fast first-level connections with no predicate labels (includePredicates=false, which is the default) using the

    GET /entity/search

    endpoint. Running it recursively on the result set, would recreate analyze/search functionality.

    For entity/search pass the uri in parentUrisDirect. Example:

    {instance}/app/api/entity/search?dir=asc&parentUrisDirect=http%3A%2F%2Fpermid.org%2F1-4297988365&includePredicates=true&includeRelDir=false&filterType=and&includeHiddenFields=true

    A combination of includePredicates=true|false and includeRelDir=true|false will give you results at varying levels of granularity and speed with:

    • includePredicates=false being the fastest, less informative
    • includePredicates=true&includeRelDir=true being the slowest, most informative

    for all entities directly connected to that entity uri passed in parentUrisDirect

    start and limit will give you the ability to page through the results if needed, which you can additionally sort on.

    3. FAST /entity/analyze with suppressEdgeDetails=true

    An alternative approach is to remove edge information from the analyze calls. This generates a sparse network by using the suppressEdgeDetails=true flag on the analyze/search or connect calls. You can use any filtering to pull only specific predicate links to begin with. If needed the predicate information can be populated in the background using a separate dedicated analyze/edge call.

Answers