# Getting Started with kuzuR

## Introduction

Welcome to `kuzuR`! This guide will walk you through the basic steps to get started with `kuzuR`, from installation to running your first query.

## Installation

First, ensure you have the `kuzuR` package installed from GitHub. You will also need `reticulate` to manage the Python environment.

Development Version

    remotes::install_github("WickM/kuzuR")

Cran Version

    install.packages("kuzuR")

## Basic Usage

### 1. Create a Connection

The first step is to create a connection to a Kuzu database. You can create an in-memory database or connect to a database on disk.

    library(kuzuR)

    # Create an in-memory database connection
    con <- kuzu_connection(":memory:")

### 2. Create a Schema

Next, define your graph schema using Cypher queries. Let’s create a simple schema with `Person` nodes and `Knows` relationships.

    kuzu_execute(con, paste("CREATE NODE TABLE Person(name STRING, age INT64,",
                            "PRIMARY KEY (name))"))
    #> <kuzu.query_result.QueryResult object at 0x0000018D81F6F230>
    kuzu_execute(con, "CREATE REL TABLE Knows(FROM Person TO Person, since INT64)")
    #> <kuzu.query_result.QueryResult object at 0x0000018D81F5A710>

### 3. Load Data

You can load data from R data frames directly into your Kuzu database.

    # Create a data frame of persons
    persons_df <- data.frame(
      name = c("Alice", "Bob", "Carol"),
      age = c(35, 45, 25)
    )

    # Create a data frame of relationships
    knows_df <- data.frame(
      from_person = c("Alice", "Bob"),
      to_person = c("Bob", "Carol"),
      since = c(2010, 2015)
    )

    # Load data into Kuzu
    kuzu_copy_from_df(con, persons_df, "Person")
    kuzu_copy_from_df(con, knows_df, "Knows")

### 4. Query Data

Finally, you can query your graph using Cypher and retrieve the results as an R data frame.

    # Execute a query
    result <- kuzu_execute(con, paste("MATCH (a:Person)-[k:Knows]->(b:Person)",
                                      "RETURN a.name, b.name, k.since"))

    # Convert the result to a data frame
    df <- as.data.frame(result)
    print(df)
    #>   a.name b.name k.since
    #> 1  Alice    Bob    2010
    #> 2    Bob  Carol    2015

This concludes the “Getting Started” guide. For more advanced topics, please see the other articles and the function reference.