R/extractors.R

#' @export
new_node_extractor <- function (node, xml_schema, reprocess, triples, access_options,
                                dry = TRUE, filename)
{

    if (!is.null(xml_schema$injector)) {
      xml_schema$injector(obkms_id = rdf4r::last_token(rdf4r::strip_filename_extension(filename),
                                                       split = "/"), node)
    }
    atoms = find_literals(node, xml_schema)
    #print(identifiers[1])
    identifiers = list(nid = identifier(get_or_set_obkms_id(node),
                                        access_options$prefix["openbiodiv"]), pid = identifier(parent_id(node),
                                                                                               access_options$prefix["openbiodiv"]), root_id = identifier(root_id(node,
                                                                                                                                                                    access_options), access_options$prefix["openbiodiv"]))
    #print(c("atoms",  atoms[1]))
    #print(c("identifiers", identifiers[1]))
    #print(c("recustion", is.recursive(triples)))

    new_bold_triples = xml_schema$constructor(atoms, identifiers = identifiers, access_options = access_options)
    new_bold_triples$set_context(triples$context)
    serialization = new_bold_triples$serialize()
    #if (dry == FALSE) {
    #  add_data(serialization, access_options = access_options)
    #}
    xml2::xml_attr(node, "obkms_process") = "TRUE"
    triples$add_triples(new_bold_triples)

  for (c in xml_schema$components) {
    nodel = xml2::xml_find_all(node, c$xpath)
    for (n in nodel) {
      new_node_extractor(n, c, reprocess = reprocess, triples = triples,
                         access_options = access_options, dry = dry, filename = filename)
    }
  }
  return(triples)
}
mariyad/openbiodiving documentation built on June 3, 2019, 2:18 p.m.