WeaviateEx.Query.QueryReference (WeaviateEx v0.7.4)

View Source

Query reference configuration for traversing cross-references.

Allows specifying which properties to return from referenced objects, and supports nested reference traversal.

Examples

# Simple reference
QueryReference.new("hasAuthor")

# Reference with properties
QueryReference.new("hasAuthor", return_properties: ["name", "bio"])

# Multi-target reference
QueryReference.multi_target("relatedTo", "Article",
  return_properties: ["title"]
)

# With metadata
QueryReference.new("hasAuthor",
  return_properties: ["name"],
  return_metadata: [:uuid, :distance]
)

# Nested references
QueryReference.new("hasAuthor",
  return_properties: ["name"],
  return_references: [
    QueryReference.new("hasPublisher", return_properties: ["name"])
  ]
)

# Use in query
Query.get("Article")
|> Query.return_references([
  QueryReference.new("hasAuthor", return_properties: ["name"])
])

Summary

Functions

Convert a list of query references to GraphQL format.

Create a multi-target reference query.

Check if this is a multi-target reference query.

Create a new query reference configuration.

Convert query reference configuration to GraphQL format.

Types

metadata_option()

@type metadata_option() :: [atom()] | :full | :common | nil

t()

@type t() :: %WeaviateEx.Query.QueryReference{
  include_vector: boolean(),
  link_on: String.t(),
  return_metadata: metadata_option(),
  return_properties: [String.t()] | nil,
  return_references: [t()] | nil,
  target_collection: String.t() | nil
}

Functions

list_to_graphql(refs)

@spec list_to_graphql([t()]) :: String.t()

Convert a list of query references to GraphQL format.

Examples

refs = [QueryReference.new("hasAuthor", return_properties: ["name"])]
QueryReference.list_to_graphql(refs)

multi_target(link_on, target_collection, opts \\ [])

@spec multi_target(String.t(), String.t(), keyword()) :: t()

Create a multi-target reference query.

For reference properties that can point to multiple collections, specify which target collection to query.

Arguments

  • link_on - Reference property name
  • target_collection - Specific collection to query

Options

Same as new/2

Examples

QueryReference.multi_target("relatedTo", "Article",
  return_properties: ["title", "content"]
)

QueryReference.multi_target("mentions", "Person",
  return_properties: ["name"],
  return_metadata: :full
)

multi_target?(query_reference)

@spec multi_target?(t()) :: boolean()

Check if this is a multi-target reference query.

new(link_on, opts \\ [])

@spec new(
  String.t(),
  keyword()
) :: t()

Create a new query reference configuration.

Parameters

  • link_on - The reference property name
  • opts - Options:
    • :return_properties - List of properties to return from referenced objects
    • :return_references - List of nested QueryReference for further traversal
    • :return_metadata - Metadata to return (list of atoms, :full, :common)
    • :include_vector - Whether to include vector in response

Examples

QueryReference.new("hasAuthor")
QueryReference.new("hasAuthor", return_properties: ["name", "bio"])
QueryReference.new("hasAuthor",
  return_properties: ["name"],
  return_metadata: [:uuid, :distance]
)

to_graphql(ref)

@spec to_graphql(t()) :: String.t()

Convert query reference configuration to GraphQL format.

Examples

ref = QueryReference.new("hasAuthor", return_properties: ["name"])
QueryReference.to_graphql(ref)