向Marklogic中的XML文档添加额外数据

向Marklogic中的XML文档添加额外数据,marklogic,marklogic-8,Marklogic,Marklogic 8,我在Marklogic中有一大组XML文档,其中包含所谓的“智能编号”(例如,前2个字符表示部门,后3个字符表示项目等)。从数字中解析所需信息相当复杂,需要数据库查找等。我们有一个java进程来处理解析。每个文档可以包含其中几个数字,我希望能够根据智能数字的属性查询XML集。例如,为给定的部门支付了多少小时的账单,或者获取给定项目花费了多少小时的明细(这些数据可以分布在许多文档中)。这使我认为我需要以某种方式将解析后的数据附加到XML文档中 我是Marklogic的新手,我想知道在这种情况下什么

我在Marklogic中有一大组XML文档,其中包含所谓的“智能编号”(例如,前2个字符表示部门,后3个字符表示项目等)。从数字中解析所需信息相当复杂,需要数据库查找等。我们有一个java进程来处理解析。每个文档可以包含其中几个数字,我希望能够根据智能数字的属性查询XML集。例如,为给定的部门支付了多少小时的账单,或者获取给定项目花费了多少小时的明细(这些数据可以分布在许多文档中)。这使我认为我需要以某种方式将解析后的数据附加到XML文档中

我是Marklogic的新手,我想知道在这种情况下什么是最佳实践。我能想到的一件事是编辑每个XML文件并将解析后的数据添加到XML中:

因此:

<ELEMENT>
    <SMART_NUMBER>Blah, Blah, Blah</SMART_NUMBER>
</ELEMENT>
<ELEMENT>
    <SMART_NUMBER>Blah2, Blah2, Blah2</SMART_NUMBER>
</ELEMENT>

废话,废话,废话
呜呜,呜呜,呜呜
变成这样:

<ELEMENT>
    <SMART_NUMBER>Blah, Blah, Blah</SMART_NUMBER>
    <PARSED_DATA>
        <DEPARTMENT>BLAH BLAH</DEPARTMENT>
        <PROJECT>BLAH BLAH</PROJECT>
        …
    </ PARSED_DATA>
</ELEMENT>
<ELEMENT>
    <SMART_NUMBER>Blah2, Blah2, Blah2</SMART_NUMBER>
    <PARSED_DATA>
        <DEPARTMENT>BLAH2 BLAH2</DEPARTMENT>
        <PROJECT>BLAH2 BLAH2</PROJECT>
        …
    </ PARSED_DATA>
</ELEMENT>

废话,废话,废话
废话
废话
…
呜呜,呜呜,呜呜
废话
废话
…

我不确定是否有“更好”的方法,使用语义似乎是可能的:对于文档中的每个智能编号,创建一个将文档链接到智能编号的三元组。然后为每个智能号码创建一组定义智能号码各个部分的三元组。但我对使用语义非常不熟悉,所以我不知道这种方法是否值得追求。欢迎提出任何意见/建议

我认为你的思路是对的。如果您想要快速的分面搜索,那么反规范化数据是目前为止最简单的方法。但是,不要把代码翻译成名字(如果我理解正确的话,需要复杂的查找),你也可以考虑把智能数分割成单独的标识符,如部门ID、项目ID。 使用语义可能很有趣,但如果您想链接到其他链接的数据源、想使用SPARQL或想推断关系,则最有趣的是使用语义


我也认为你的思路是对的

如果您想使用三元组来存储数据,这将是一个有趣的想法。对于三元组,正如您正确指出的,您可以将smart number的各个部分保存到smart number中,三元组可能如下所示-

如果要按任何参数对数据进行分区,也可以在插入三元组时使用。如果您使用的是图形,则可能需要

PS:图是与三元组等价的XML集合


希望这有帮助

感谢您的回复,我继续使用更新XML的方法,它似乎工作得很好。