Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将XML文件转换为具有空白节点的RDF_Xml_Xslt_Rdf_Blank Nodes - Fatal编程技术网

将XML文件转换为具有空白节点的RDF

将XML文件转换为具有空白节点的RDF,xml,xslt,rdf,blank-nodes,Xml,Xslt,Rdf,Blank Nodes,我对使用XSLT还很陌生 我正在编写一个从XML(元数据)文档到XML/RDF的XSL转换,并且我还在改进原始文档的基础模型。具体而言,原始文档描述了一个人,并在某个时候列出了该人的所有姓名: <?xml version="1.0" encoding="UTF-8"?> <Person RecordID="abcd"> <PersonNames> <PersonName> <Surname>

我对使用XSLT还很陌生

我正在编写一个从XML(元数据)文档到XML/RDF的XSL转换,并且我还在改进原始文档的基础模型。具体而言,原始文档描述了一个人,并在某个时候列出了该人的所有姓名:

<?xml version="1.0" encoding="UTF-8"?>
<Person RecordID="abcd">
    <PersonNames>
        <PersonName>
            <Surname>Doe</Surname>
            <FirstName>John</FirstName>
        </PersonName>
        <PersonName>
            <Surname>Doe</Surname>
            <FirstName>Janine</FirstName>
        </PersonName>
        <PersonName>
            <Surname>Smith</Surname>
            <FirstName>Janine</FirstName>
        </PersonName>
    </PersonNames>
</Person>

雌鹿
约翰
雌鹿
珍妮
史密斯
珍妮
我不想将此人的URI分别连接到这些项目中的每一项,因为这样做不清楚“Joe Smith”从来就不是此人的名字。我宁愿为每个名字使用一个空白节点,然后将FirstName和姓氏链接到相应的空白节点;但是,我找不到一个解决方案来生成一个空白节点ID(我会在xsl:for遍历所有人名的每个循环中这样做),然后在循环外部调用并引用该ID

直观地说,我会为每个元素创建一个id personNameID,然后在循环外部(和子树外部)添加相应的三元组。结果可能是:

<rdf:RDF 'namespaces'>
    <localontology:Person>
    ... person's metadata ...
    <foaf:name rdf:nodeID="name1">
    <foaf:name rdf:nodeID="name2">
    ....
</localontology:Person>
<rdf:Description rdf:nodeID="name1">
    <localontology:firstName 'FirstName in name1'>
    <localontology:surname 'Surname in name1'>
</rdf:Description>
<rdf:Description rdf:nodeID="name1">
    <localontology:firstName 'FirstName in name2'>
    <localontology:surname 'Surname in name2'>
</rdf:Description>

... 个人元数据。。。
....

我真的不知道我可以使用哪些函数/结构。。。有人可以帮忙吗?

我不会在这里使用空白节点。空白节点可以有一个URI,比如LoopOnt定理:Dr.DoE,它有第一个名字和姓氏作为属性。这样的uri是有意义的,当人们共享一个名称时,您可以重用同一个实例。如果您需要帮助生成这样的uri,请留下评论


如果坚持使用空节点,可以使用number()和/或position()获取当前节点并使用它生成uri

您的问题不清楚:您的示例请求的输出是什么(假设您发布的是输入)?对不起,在编辑之前,我按下了“发布”按钮!这样清楚吗?对不起,不清楚。我不知道你说的“三元组”或“空白节点”是什么意思。三元组是RDF(主谓宾语)中的语句。空白节点是指在使用该节点的RDF图之外没有URI的节点。这个问题的一个标签是RDF,虽然我在这方面非常专家,但我对XSLT却一无所知。我认为这个问题纯粹是关于XSLT的,您应该这样提出它(即,发布输入和匹配所需输出的最小但完整的示例,并解释所需转换的逻辑)。您不应该假设或要求回答者具备RDF专业知识,除非您愿意等待这两方面的专家出现。