34 lines
838 B
Go
34 lines
838 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
selectionqueries "visualizador_instanciados/backend_go/selection_queries"
|
|
)
|
|
|
|
func runSelectionQuery(
|
|
ctx context.Context,
|
|
sparql *AnzoGraphClient,
|
|
snapshot GraphResponse,
|
|
queryID string,
|
|
selectedIDs []int,
|
|
includeBNodes bool,
|
|
) ([]int, error) {
|
|
def, ok := selectionqueries.Get(queryID)
|
|
if !ok {
|
|
return nil, fmt.Errorf("unknown query_id: %s", queryID)
|
|
}
|
|
|
|
idToNode := make(map[int]selectionqueries.NodeRef, len(snapshot.Nodes))
|
|
keyToID := make(map[string]int, len(snapshot.Nodes))
|
|
for _, n := range snapshot.Nodes {
|
|
nr := selectionqueries.NodeRef{ID: n.ID, TermType: n.TermType, IRI: n.IRI}
|
|
idToNode[n.ID] = nr
|
|
keyToID[n.TermType+"\x00"+n.IRI] = n.ID
|
|
}
|
|
|
|
return def.Run(ctx, sparql, selectionqueries.Index{IDToNode: idToNode, KeyToID: keyToID}, selectedIDs, includeBNodes)
|
|
}
|
|
|