Skip to content
Snippets Groups Projects
JenaQuery.js 910 B
Newer Older
esikkala's avatar
esikkala committed
import { has } from 'lodash'
import { runSelectQuery } from './SparqlApi'
esikkala's avatar
esikkala committed
import { fullTextQuery } from './SparqlQueriesGeneral'
import { makeObjectList } from './SparqlObjectMapper'

export const queryJenaIndex = async ({
esikkala's avatar
esikkala committed
  backendSearchConfig,
  queryTerm,
esikkala's avatar
esikkala committed
  resultClass,
esikkala's avatar
esikkala committed
  resultFormat
}) => {
esikkala's avatar
esikkala committed
  let q = fullTextQuery
esikkala's avatar
esikkala committed
  const config = backendSearchConfig[resultClass]
  let endpoint
  if (has(config, 'endpoint')) {
    endpoint = config.endpoint
  } else {
    endpoint = backendSearchConfig[config.perspectiveID].endpoint
  }
  const { properties } = config
esikkala's avatar
esikkala committed
  q = q.replace('<QUERY>', `?id text:query ('${queryTerm.toLowerCase()}' 2000) .`)
esikkala's avatar
esikkala committed
  q = q.replace('<RESULT_SET_PROPERTIES>', properties)
  const results = await runSelectQuery({
esikkala's avatar
esikkala committed
    endpoint: endpoint.url,
    useAuth: endpoint.useAuth,
    resultMapper: makeObjectList,
    resultFormat
  })
  return results
esikkala's avatar
esikkala committed
}