
sem:rdf-builder( [$prefixes as map:map?], [$graph as sem:iri?] ) as function(item(),item(),item()) as sem:triple
This function returns a function that builds triples 
		from CURIE and blank node syntax. The resulting function takes 
		three string arguments, representing subject, predicate, 
		and object respectively, which returns a sem:triple object 
		using the graph and prefix mappings passed in to the call to 
		sem:rdf-builder. 
		Blank nodes specified with a leading underscore (_) will 
		be assigned blank node identifiers, and will maintain that 
		identity across multiple invocations; for example, 
		"_:person1" will refer to the same node as a later 
		invocation that also mentions "_:person1". In the 
		predicate position, the special value of "a" will be 
		interpreted as the same as "rdf:type".
| Parameters | |
|---|---|
| prefixes | An optional set of prefix mappings. | 
| graph | The graph value in which to place triples. Defaults to "http://marklogic.com/semantics#default-graph". | 
sem:rdf-builder, it will be 
	  interpreted as a CURIE. If you want it to be interpreted as an IRI, 
	  then cast the string to an IRI using sem:iri.
  
xquery version "1.0-ml"; 
 
import module namespace sem = "http://marklogic.com/semantics" 
      at "/MarkLogic/semantics.xqy";
      
let $fac := sem:rdf-builder()
let $triple := $fac("foaf:person1", "foaf:knows", "foaf:person2")
return <result>{$triple}</result> 
	
=>
<result>
  <sem:triple xmlns:sem="http://marklogic.com/semantics">
     <sem:subject>http://xmlns.com/foaf/0.1/person1</sem:subject>
     <sem:predicate>http://xmlns.com/foaf/0.1/knows</sem:predicate>
     <sem:object>http://xmlns.com/foaf/0.1/person2</sem:object>
  </sem:triple>
</result>
    
  
xquery version "1.0-ml"; 
 
import module namespace sem = "http://marklogic.com/semantics" 
      at "/MarkLogic/semantics.xqy";
let $fac := sem:rdf-builder()
let $t1 := $fac("_:person1", "a", "foaf:Person") 
let $t2 := $fac("_:person2", "a", "foaf:Person") 
let $t3 := $fac("_:person1", "foaf:knows", "_:person2") 
return ($t1,$t2,$t3)
 
	
=>
sem:triple(
  sem:blank("http://marklogic.com/semantics/blank/3655782280846814211"),
  sem:iri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
  sem:iri("http://xmlns.com/foaf/0.1/Person"))
sem:triple(
  sem:blank("http://marklogic.com/semantics/blank/1129346327653055324"),
  sem:iri("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"),
  sem:iri("http://xmlns.com/foaf/0.1/Person"))
 
sem:triple(
  sem:blank("http://marklogic.com/semantics/blank/3655782280846814211"),
  sem:iri("http://xmlns.com/foaf/0.1/knows"),
  sem:blank("http://marklogic.com/semantics/blank/1129346327653055324"))
    
  
Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.