2015-07-13 67 views
-1

手动我一直在试图插入Marklogic三元组使用此查询如何构建三元组Marklogic

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

declare variable $TRIPLE as xs:string external ; 
declare variable $GRAPHNAME as xs:string external ; 
let $TRIPLE:="sem:triple(sem:iri('http://smartlogic.com/document#testForTriples.xml'),sem:iri('http://www.smartlogic.com/schemas/docinfo.rdf#type'),'document')" 
let $GRAPHNAME :="sem:iri('testGraph')" 
let $r := 
sem:graph-insert($GRAPHNAME, $TRIPLE) 

return <result>{$r}</result> 

不幸的是,返回强制错误:

XDMP-AS: (err:XPTY0004) $graphname as sem:iri -- Invalid coercion: "sem:iri('testGraph')" as sem:iri 

我在做什么错?

回答

1

你不应该把周围sem:triplesem:iri报价,他们是类型转换功能:

xquery version "1.0-ml"; 

import module namespace sem = "http://marklogic.com/semantics" 
    at "/MarkLogic/semantics.xqy"; 

let $TRIPLE := sem:triple(sem:iri('http://smartlogic.com/document#testForTriples.xml'),sem:iri('http://www.smartlogic.com/schemas/docinfo.rdf#type'),'document') 
let $GRAPHNAME := sem:iri('testGraph') 
let $r := sem:graph-insert($GRAPHNAME, $TRIPLE) 

return <result>{$r}</result> 

如果您要动态地创建的三元组,经过SEM:三重或SEM:从外部IRI对象,或者传递字符串值,并将其转换为代码。

HTH!