将XML文件转换为具有空白节点的RDF
我对使用XSLT还很陌生 我正在编写一个从XML(元数据)文档到XML/RDF的XSL转换,并且我还在改进原始文档的基础模型。具体而言,原始文档描述了一个人,并在某个时候列出了该人的所有姓名:将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>
<?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专业知识,除非您愿意等待这两方面的专家出现。