## ----doini, message=FALSE-----------------------------------------------------
library(ontoProc2)
goss <- semsql_connect(ontology = "go")
goss

## ----lkrep1-------------------------------------------------------------------
report(goss)

## ----lktbs--------------------------------------------------------------------
library(dplyr)
library(DBI)
allt <- dbListTables(goss@con)
length(allt)
head(allt)

## ----lkti,message=FALSE-------------------------------------------------------
library(DT)
tbl(goss@con, "statements")
tbl(goss@con, "statements") |>
  head(20) |>
  as.data.frame() |>
  datatable()

## ----dosrc--------------------------------------------------------------------
search_labels(goss, "apoptosis") |>
  head() |>
  datatable()

## ----dosrc2-------------------------------------------------------------------
search_labels(goss, "apoptosis") |>
  filter(grepl("^GO:", subject)) |>
  head() |>
  datatable()

## ----lkoi, cache=TRUE---------------------------------------------------------
clss <- semsql_connect(ontology = "cl")
cloi <- semsql_to_oi(clss@con)
cloi

## ----dopl---------------------------------------------------------------------
onto_plot2(cloi, c("CL:0000624", "CL:0000492", "CL:0000793", "CL:0000803"))

## ----lksrch-------------------------------------------------------------------
library(S7)
method(search_labels, SemsqlConn)

## ----doentr-------------------------------------------------------------------
if (!is_connected(clss)) clss <- reconnect(clss)
entcurie <- search_labels(clss, "enteric neuron") |>
  filter(grepl("^CL", subject)) |>
  dplyr::select(subject) |>
  unlist()
entcurie
get_direct_edges(clss, entcurie)

## ----lkmeth-------------------------------------------------------------------
method(get_direct_edges, SemsqlConn)

## ----lkent--------------------------------------------------------------------
get_ancestors(clss, entcurie)

## ----getmore------------------------------------------------------------------
ub <- semsql_connect(ontology = "uberon")
ro <- semsql_connect(ontology = "ro")

## ----lkub---------------------------------------------------------------------
fbcur <- search_labels(ub, "forebrain", limit = 1000) |>
  filter(label == "forebrain") |>
  select(subject) |>
  unlist()
fbcur

## ----lkro---------------------------------------------------------------------
loccur <- search_labels(ro, "has soma location") |>
  select(subject) |>
  unlist()
loccur

## ----lkcurn-------------------------------------------------------------------
ncur <- search_labels(clss, "neuron", limit = 1000) |>
  filter(label == "neuron") |>
  select(subject) |>
  unlist()
ncur

## ----infb---------------------------------------------------------------------
clinfb <- tbl(clss@con, "entailed_edge") |>
  filter(predicate == loccur, object == fbcur) |>
  select(subject) |>
  collect() |>
  unlist()
length(clinfb)

## ----isne---------------------------------------------------------------------
clisneur <- tbl(clss@con, "entailed_edge") |>
  filter(predicate == "rdfs:subClassOf", object == ncur) |>
  filter(subject %in% clinfb) |>
  select(subject) |>
  collect() |>
  unlist()
length(clisneur)

## ----doint--------------------------------------------------------------------
tbl(clss@con, "rdfs_label_statement") |>
  filter(subject %in% clisneur) |>
  select(subject, value) |>
  collect() |>
  DT::datatable()

## ----lksess-------------------------------------------------------------------
sessionInfo()

