---
name: "RDF::Redland::Node"
section: "3pm"
platform: "linux"
package: "librdf-perl"
version: "1.0.17.1+dfsg-6+b6"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/RDF::Redland::Node"
---

# RDF::Redland::Node(3pm)

Redland RDF Node (RDF Resource, Property, Literal) Class

## NAME

RDF::Redland::Node - Redland RDF Node (RDF Resource, Property, Literal) Class

## SYNOPSIS

```
  use RDF::Redland;
  my $node1=new RDF::Redland::Node("Hello, World!");
  my $node2=new RDF::Redland::Node($uri); # $uri is an RDF::Redland::URI
  my $node3=$node2->clone;
  my $node4=new RDF::Redland::URINode("http://example.com/");
  my $node5=new RDF::Redland::LiteralNode("Hello, World!");
  my $node6=new RDF::Redland::XMLLiteral("<tag>content</tag>");
  my $node7=new RDF::Redland::BlankNode("genid1");
  # alternate more verbose ways:
  my $node4=RDF::Redland::Node->new_from_uri("http://example.com/");
  my $node5=RDF::Redland::Node->new_literal("Hello, World!");
  my $node6=RDF::Redland::Node->new_xml_literal("<tag>content</tag>");
  my $node7=RDF::Redland::Node->new_from_blank_identifier("genid1");
  ...
  print $node4->uri->as_string,"\n";  # Using RDF::Redland::URI::as_string
  print $node5->literal_value_as_latin1,"\n";
```

## DESCRIPTION

This class represents RDF URIs, literals and blank nodes in the RDF graph.

## CONSTRUCTORS

- new \[STRING \| URI \| NODE\]

  Create a new URI node, literal node or copy an existing node.

  If a literal *STRING* is given, make a plain literal node.  If a the argument is of type *URI* (perl URI or RDF::Redland::URI), make a resource node.

  Otherwise if the argument is an RDF::Redland::Node *NODE*, copy it.

- new\_from\_uri URI

  Create a new URI node.  *URI* can be either a RDF::Redland::URI object, a perl URI class or a literal string.

  An alternative is:

  ```
    new RDF::Redland::URINode("http://example.org/");
  ```

- new\_literal STRING \[DATATYPE \[XML\_LANGUAGE\]\]

  Create a new literal node for a literal value *STRING*. Optional datatype URI *DATATYPE* (RDF::Redland::URI, perl URI or string) and language (xml:lang attribute) *XML\_LANGUAGE* may also be given.

  An alternative is:

  ```
     new RDF::Redland::LiteralNode("Hello, World!");
     new RDF::Redland::LiteralNode("Bonjour monde!", undef, "fr");
  ```

- new\_xml\_literal STRING

  Create a new XML datatyped literal node for the XML in *STRING*.

  An alternative is:

  ```
    new RDF::Redland::XMLLiteral("<tag>content</tag>");
  ```

- new\_from\_blank\_identifier IDENTIFIER

  Create a new blank node with blank node identifier *IDENTIFIER*.

  An alternative is:

  ```
    new RDF::Redland::BlankNode("id");
  ```

- clone

  Copy a RDF::Redland::Node.

## METHODS

- uri

  Get the current URI of the node as an RDF::Redland::URI object.

- blank\_identifier

  Get the current blank identifier of the node

- type

  Get the node type.  It is recommended to use the is\_resource, is\_literal or is\_blank methods in preference to this (both simpler and quicker).

  The current list of types that are supported are:

  ```
    $RDF::Redland::Node::Type_Resource
    $RDF::Redland::Node::Type_Literal
    $RDF::Redland::Node::Type_Blank
  ```

  Example:

  ```
    if ($node->type == $RDF::Redland::Node::Type_Resource) {
      print "Node is a resource with URI ", $node->uri->as_string, "\n";
    } else {
      ...
    }
  ```

- is\_resource

  Return true if node is a resource (with a URI)

- is\_literal

  Return true if node is a literal

- is\_blank

  Return true if node is a blank nodeID

- literal\_value

  Get the node literal value string as UTF-8 (when the node is of type `$RDF::Redland::Node::Type_Literal`)

- literal\_value\_as\_latin1

  Get the node literal value string converted from UTF-8 to ISO Latin-1 (when the node is of type `$RDF::Redland::Node::Type_Literal`)

- literal\_value\_language

  Get the node literal XML language (when the node is of type `$RDF::Redland::Node::Type_Literal`) or undef if not present.

- literal\_value\_is\_wf\_xml

  Return non 0 if the literal string is well formed XML (when the node is of type `$RDF::Redland::Node::Type_Literal`).

- literal\_datatype

  Return the RDF::Redland::URI of the literal datatype or undef if it is not a datatype.

- as\_string

  Return the RDF::Redland::Node formatted as a string (UTF-8 encoded).

- equals NODE

  Return non zero if this node is equal to NODE

## OLDER METHODS

- new\_from\_literal STRING XML\_LANGUAGE IS\_WF

  Create a new RDF::Redland::Node object for a literal value *STRING* with XML language (xml:lang attribute) *XML\_LANGUAGE* and if content is well formed XML, when *IS\_WF* is non 0.  *XML\_LANGUAGE* is optional can can be set to undef.

  This method remains but using new\_literal is preferred. Instead, for plain literals use:

  ```
    $node=new RDF::Redland::Node("blah")
  ```

- new\_from\_typed\_literal STRING \[DATATYPE \[XML\_LANGUAGE\]\]

  Renamed to new\_literal with same arguments.

- new\_from\_uri\_string URI\_STRING

  Create a new RDF::Redland::Node object for a resource with URI *URI\_STRING*. It is equivalent to use the shorter:

  ```
    $a=new RDF::Redland::Node->new_from_uri($uri_string)
  ```

- new\_from\_node NODE

  Create a new RDF::Redland::Node object from existing RDF::Redland::Node *NODE* (copy constructor). It is equivalent to use:

  ```
    $new_node=$old_node->clone
  ```

## SEE ALSO

RDF::Redland::Statement

## AUTHOR

Dave Beckett - http://www.dajobe.org/
