以下是以前的职位:
Graph data model to transform XML to RDF
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sbase="http://my.semantics/projects/" xmlns:spi="http://my.semantics/projects/incentive/" version="2.0">
<xsl:template match="projects">
<xsl:element name="rdf:RDF">
<xsl:for-each select="project">
<xsl:element name="rdf:Description">
<xsl:attribute name="rdf:about" select="concat('http://my.semantics/projects/incentive/', projectID)" />
<xsl:attribute name="sbase:program" select="program" />
<xsl:attribute name="sbase:projectID" select="projectID" />
<xsl:attribute name="sbase:projectName" select="projectName" />
<xsl:attribute name="sbase:recipient" select="recipient" />
<xsl:element name="sbase:about">
<xsl:attribute name="rdf:resource" select="'http://my.semantics/ontology/economy'" />
</xsl:element>
<xsl:element name="spi:postalCode">
<xsl:value-of select="postalCode" />
</xsl:element>
<xsl:element name="spi:region">
<xsl:value-of select="region" />
</xsl:element>
<xsl:element name="spi:industry">
<xsl:value-of select="industry" />
</xsl:element>
<xsl:element name="spi:incentiveType">
<xsl:value-of select="incentiveType" />
</xsl:element>
<xsl:element name="spi:startDate">
<xsl:value-of select="startDate" />
</xsl:element>
<xsl:element name="spi:totalAwarded">
<xsl:value-of select="totalAwarded" />
</xsl:element>
<xsl:element name="spi:totalInvestment">
<xsl:value-of select="totalInvestment" />
</xsl:element>
<xsl:element name="spi:disbursementsToDate">
<xsl:value-of select="disbursementsToDate" />
</xsl:element>
<xsl:element name="rdf:comment">
<xsl:value-of select="projectDescription" />
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:transform>如果我使用sem:rdf-insert(xdmp:xslt-eval($rdf-xml, $doc),"rdfxml", (), "rdf-incentive"),我会得到错误:
XDMP- as:(err:XDMP 0004) $triples作为sem:三元组*-无效强制:xs:untyped原子()作为sem:三元组
如果是sem:rdf-load((xdmp:xslt-eval($rdf-xml,$doc)),"rdfxml",(),(),"rdf-incentive")
我有错误:
SVC-FILOPN: xdmp:document-get()…::没有这样的文件或目录
发布于 2022-03-26 16:59:06
考虑到RDF语法的复杂性,可以考虑
单独的XSL来声明共享的RDF属性
<xsl:attribute-set name="incentiveRDFAttr">
<xsl:attribute name="rdf:about" select="concat('http://my.semantics/projects/incentive/', projectID)"/>
<xsl:attribute name="sbase:program" select="program"/>
<xsl:attribute name="sbase:projectID" select="projectID"/>
<xsl:attribute name="sbase:projectName" select="projectName"/>
<xsl:attribute name="sbase:recipient" select=" recipient"/>
</xsl:attribute-set>
<xsl:attribute-set name="rdfDataTime">
<xsl:attribute name="rdf:datatype" select="'http://www.w3.org/2001/XMLSchema#dateTime'"/>
</xsl:attribute-set>
<xsl:attribute-set name="rdfDecimal">
<xsl:attribute name="rdf:datatype" select="'http://www.w3.org/2001/XMLSchema#decimal'"/>
</xsl:attribute-set>
««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»«»»««»»««»»««»»在主RDF转换XSL中调用属性XSL
<!-- Ingested attribute XSL in module database -->
<xsl:include href="/xsl/rdf-attributes.xsl"/>
<xsl:template match="projects">
<xsl:element name="rdf:RDF">
<xsl:for-each select="project">
<xsl:element name="rdf:Description" use-attribute-sets="incentiveRDFAttr">
««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»«»»««»»««»»««»»
<xsl:element name="spi:startDate" use-attribute-sets="rdfDataTime"><xsl:value-of select="normalize-space(startDate)"/></xsl:element>
<xsl:element name="spi:totalAwarded" use-attribute-sets="rdfDecimal"><xsl:value-of select="normalize-space(totalAwarded)"/></xsl:element>
««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»««»»«»»««»»««»»««»»
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>请使用
sem:rdf-parse来序列化XSL转换后和摄入期间的RDF三元组:
sem:rdf-insert(
sem:rdf-parse(xdmp:xslt-eval($rdf-xml, $doc), "rdfxml"),
("rdfxml", "directory=/my/semantics/"),
(),
"rdf-incentive"
)https://stackoverflow.com/questions/71624853
复制相似问题