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:
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.