RDF::R...::Node(3pm)

πŸ’– NAME πŸ’–

RDF::Redland::Node β€” the Redland RDF Node class, aka your one-stop glow-up for RDF Resources, Properties and Literals πŸ’…

So bestie, this is RDF::Redland::Node, and it lives in the RDF::Redland perl module fam (that's the 3pm situation, iykyk). Come thru ✨


πŸ¦‹ 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 is literally the main character of RDF URIs, literals and blank nodes in the RDF graph. That's the whole vibe. πŸ’œ


πŸŽ€ CONSTRUCTORS πŸŽ€

New node, who dis? ✨

  • new [STRING | URI | NODE] β€” makes a brand new URI node, a literal node, or copies a node that already exists. Here's the tea πŸ“:
    • If you hand it a literal STRING, it makes a plain literal node.
    • If the argument is of type URI (a perl URI or a RDF::Redland::URI), it makes a resource node.
    • Otherwise, if the argument is an RDF::Redland::Node NODE, it copies it. Periodt.
  • new_from_uri URI β€” makes a new URI node. πŸ’« URI can be either a RDF::Redland::URI object, a perl URI class, or just a literal string. No cap.

An alternative is:

new RDF::Redland::URINode("http://example.org/");
  • new_literal STRING [DATATYPE [XML_LANGUAGE]] β€” makes a new literal node for a literal value STRING. You can also pass the optional datatype URI DATATYPE (which wants a RDF::Redland::URI, a perl URI, or a string) and the language (that's the xml:lang attribute, bestie) XML_LANGUAGE. 🫢

An alternative is:

new RDF::Redland::LiteralNode("Hello, World!");
new RDF::Redland::LiteralNode("Bonjour monde!", undef, "fr");
  • new_xml_literal STRING β€” makes a new XML datatyped literal node for the XML inside STRING. Iconic behaviour fr fr. 🧚

An alternative is:

new RDF::Redland::XMLLiteral("<tag>content</tag>");
  • new_from_blank_identifier IDENTIFIER β€” makes a new blank node with blank node identifier IDENTIFIER. 🌈

An alternative is:

new RDF::Redland::BlankNode("id");
  • clone β€” copies a RDF::Redland::Node. Twin energy, obsessed. πŸ‘‘

✨ METHODS ✨

Okay so here's where the actual slay happens πŸ’…

  • uri β€” gets the current URI of the node, as an RDF::Redland::URI object.
  • blank_identifier β€” gets the current blank identifier of the node.
  • type β€” gets the node type. ⚠️ Lowkey important: it's recommended to use the is_resource, is_literal or is_blank methods in preference to this one (they're both simpler and quicker, bestie β€” the way that they ate πŸ’€).

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 β€” returns true if the node is a resource (with a URI). πŸ’–
  • is_literal β€” returns true if the node is a literal. 🌸
  • is_blank β€” returns true if the node is a blank nodeID.
  • literal_value β€” gets the node literal value string as UTF-8 (when the node is of type $RDF::Redland::Node::Type_Literal). πŸ’œ
  • literal_value_as_latin1 β€” gets 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 β€” gets the node literal XML language (when the node is of type $RDF::Redland::Node::Type_Literal), or undef if it's not present. πŸ™ˆ
  • literal_value_is_wf_xml β€” returns non 0 if the literal string is well formed XML (when the node is of type $RDF::Redland::Node::Type_Literal). ✨
  • literal_datatype β€” returns the RDF::Redland::URI of the literal datatype, or undef if it isn't a datatype.
  • as_string β€” returns the RDF::Redland::Node formatted as a string (UTF-8 encoded). πŸ¦‹
  • equals NODE β€” returns non zero if this node is equal to NODE. Twin check βœ…

πŸ’€ OLDER METHODS πŸ’€

These are the legacy girlies. Still here, still valid, but there's a fresher way to do things now. πŸ‘‘
  • new_from_literal STRING XML_LANGUAGE IS_WF β€” creates a new RDF::Redland::Node object for a literal value STRING with XML language (that's the xml:lang attribute 🌈) XML_LANGUAGE, and if the content is well formed XML, when IS_WF is non 0. XML_LANGUAGE is optional and 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. Same girl, new name πŸ’…
  • new_from_uri_string URI_STRING β€” creates 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 β€” creates a new RDF::Redland::Node object from an existing RDF::Redland::Node NODE (copy constructor situation). It is equivalent to use:
$new_node=$old_node->clone

πŸ”₯ SEE ALSO πŸ”₯

  • RDF::Redland::Statement β€” go give her a read too, bestie 🫢

🌟 AUTHOR 🌟

Dave Beckett β€” http://www.dajobe.org/ πŸ’– (hi Dave, you ate, no crumbs)


And that's the whole page, fr fr. This was perl v5.42.3, dated 2026-08-20, RDF::R...::Node(3pm) β€” stream it, screenshot it, tell your friends. Slay πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from