Loading TOC...

sem:triple

sem:triple(
   $subject_or_node as item(),
   [$predicate as xs:anyAtomicType],
   [$object as xs:anyAtomicType],
   [$graph as sem:iri?]
) as sem:triple

Summary

Creates a triple object, which represents an RDF triple containing atomic values representing the subject, predicate, object, and optionally graph identifier (graph IRI).

This function is a built-in.

Parameters
$subject_or_node The triple's subject as an atomic value, or the whole triple as a node. If specifying a node as a triple, this function must be used as a single-parameter version (that is, you cannot specify a triple in this parameter and also use the other parameters).
$predicate The triple's predicate.
$object The triple's object.
$graph The triple's graph IRI. This parameter is only available if you have specified a subject, predicate, and object, and is not available if you have specified an element as a triple in the first parameter.

Usage Notes

It is possible to create triples with sem:triple that might not be valid RDF triples. For example, you can create a triple with a blank node (sem:bnode()) as a predicate, even though that is not allowed in RDF. This is because the triples you can create with sem:triple are more general than what is allowed in RDF.

Example

xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics"
   at "MarkLogic/semantics.xqy";

sem:triple(sem:iri("subject"), sem:iri("predicate"), "object")

(: Returns the specified triple. :)

Example

xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics"
   at "MarkLogic/semantics.xqy";

sem:triple(
<sem:triple xmlns:sem="http://marklogic.com/semantics">
  <sem:subject>subject</sem:subject>
  <sem:predicate>predicate</sem:predicate>
  <sem:object
   datatype="http://www.w3.org/2001/XMLSchema#string">object</sem:object>
</sem:triple>)

(: Returns the specified triple. :)

Example

xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics"
   at "MarkLogic/semantics.xqy";

sem:triple(
  object-node {
    "triple" : object-node {
      "subject" : "subject",
      "predicate" : "predicate",
      "object" : object-node {
        "value" : "object",
        "datatype" : "http://www.w3.org/2001/XMLSchema#string"
      }
    }
  }
)

(: Returns the specified triple. :)

Example

xquery version "1.0-ml";
import module namespace sem = "http://marklogic.com/semantics"
   at "MarkLogic/semantics.xqy";

sem:triple(
<foo>{sem:triple(sem:iri("subject"), sem:iri("predicate"),
      "object")}
</foo>/element())

(: Returns the specified triple. :)

Stack Overflow iconStack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.