R/redland-package.R

#
#   This work was created by the National Center for Ecological Analysis and Synthesis.
#
#     Copyright 2015 Regents of the University of California
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.
#
#' @title Create, query and write RDF graphs.
#' @description The R package \emph{redland} provides methods to create, query and write information stored in the
#' Resource Description Framework (RDF). This package is implemented as R scripts that provide an
#' R interface (aka "wrapper") to the Redland RDF C libraries. Documentation for the redland R package classes
#' and functions are available from the standard R help facility, for example,  \code{'help("Node-class")'}, \code{'?getNodeType'}, etc.
#'
#' An overview of the redland R package is available with the R command: \code{'vignette("redland_overview")'}.
#'
#' The Redland C library functions are described at \url{https://librdf.org/docs/api/index.html}.
#'
#' An introduction to RDF can be found at \url{https://www.w3.org/TR/rdf-primer/}.
#'
#' @details
#' The redland R package classes and the corresponding Redland C library types are shown in the following table:
#' \tabular{llll}{
#' \strong{Concept}\tab \strong{Redland C type}\tab \strong{redland R class}\tab \strong{Purpose}\cr
#' Resource / Literal\tab librdf_node\tab \linkS4class{Node}\tab RDF Model & Syntax nodes\cr
#' Statement / Triple\tab librdf_statement\tab \linkS4class{Statement}\tab RDF Model & Syntax arcs (statements, triples)\cr
#' Model\tab librdf_model\tab \linkS4class{Model}\tab Set of Statements usually held in one Storage.\cr
#' Node\tab librdf_node\tab \linkS4class{Node}\tab The subject, predicate or object of a Statement\cr
#' Storage\tab librdf_storage\tab \linkS4class{Storage}\tab Storage for Models either persistent or in-memory.\cr
#' Parser\tab librdf_parser\tab \linkS4class{Parser}\tab Syntax parsers delivering Stream of Statements or writing to a Model\cr
#' Query\tab librdf_query\tab \linkS4class{Query}\tab Querying of an Model delivering a QueryResults\cr
#' QueryResults\tab librdf_query_results\tab \linkS4class{QueryResults}\tab Results of applying an Query to a Model giving either variable bindings with Node values or Stream of Statements\cr
#' Serializer\tab librdf_serializer\tab \linkS4class{Serializer}\tab Serializes a Model into a syntax such as RDF/XML\cr
#' World\tab librdf_world\tab \linkS4class{World}\tab RDF wrapper class handling Redland startup/shutdown\cr
#' }
#'
#' @note
#' In order to communicate with the Redland RDF C libraries, the redland R package uses an interface layer that is created
#' with the software package \emph{Simplified Wrapper and Interface Generator} (\href{https://github.com/swig/swig}{SWIG}).
#' The relationship between the redland R package and the Redland C libraries is:
#'
#' User script -> redland R package -> SWIG R interface -> Redland C libraries -> RDF data
#'
#' It is recommended that the redland package R classes be used to interact with RDF, as these higher level classes take care of many of the the
#' details of communicating with the Redland C libraries. However, all of the lower level R interface functions generated by SWIG are made available
#' by the redland package. These interface functions usually have names beginning with \code{'librdf_'}, \code{'rasqal_'} or \code{'raptor_'} and
#' are usually the same name as the underlying C library function. Documentation
#' for the R SWIG interface functions can be found via R help i.e. \code{'?librdf_iterator'}.
#'
#' @examples
#' # This example creates the necessary R objects to hold an RDF model and reads 
#' # in a file that contains RDF/XML statements. This model is then queried for 
#' # and the query results inspected.
#' world <- new("World")
#' storage <- new("Storage", world, "hashes", name="", options="hash-type='memory'")
#' model <- new("Model", world, storage, options="")
#' filePath <- system.file("extdata/example.rdf", package="redland")
#' parser <- new("Parser", world)
#' parseFileIntoModel(parser, world, filePath, model)
#' queryString <- paste("PREFIX dc: <http://purl.org/dc/elements/1.1/> ",
#'                      "SELECT ?a ?c WHERE { ?a dc:description ?c . }", sep="")
#' query <- new("Query", world, queryString, base_uri=NULL, 
#'              query_language="sparql", query_uri=NULL)
#' results <- getResults(query, model, "rdfxml")
#' 
#' # When the query object is no longer needed, the resources it had allocated can be freed.
#' freeQuery(query)
#' rm(query)
#' @docType package
#' @name redland
#' @author Matthew B. Jones (NCEAS) and Peter Slaughter (NCEAS)
NULL

Try the redland package in your browser

Any scripts or data that you put into this service are public.

redland documentation built on May 31, 2023, 6:32 p.m.