在关系数据上强加层次结构

时间:2015-12-19 16:54:08

标签: xpath data-structures hierarchical

我试图发明一种在关系数据上强加层次结构的语法。 (我目前正在使用关系数据库来存储它,但这与问题并不特别相关。)我使用的例子是Fédération Cynologique Internationale(世界犬组织),其中列出了犬种。他们的数据组织如下:

  • 基本单位是品种。一个品种有:
    • 十个小组中的一个
    • 组内的一个部分(组有零到五个部分)
    • 本节中的可选小节
    • 一组可选的品种
    • 一组(一至两个)原产地
  • 品种有一组可选的子品种

我希望能够表达任何合理的"放置品种的结构。以下是使用基于正则表达式的语法的一些示例,具有以下解释:

  1. 完整结构

    /组/(部分/(小节/)?)?地点/品种(/品种(/ subvariety)?)?

    • 结构的顶层是组
    • 如果论坛有任何
    • ,则会在下一级别进行
    • 如果该组包含子部分,则这些是子层次结构的下一级
    • 根据结构
    • ,地点是下一个,在组,部分或子部分中
    • 品种按地点组织
    • 如果该品种有品种,那么下一步
    • 如果品种有子品种,那么接下来就是
  2. 按结构最小的组和地点列出。

    /组/地点/(部分/)?品种(/品种)?

    • 顶级是
    • 地方进入群组
    • 部分列在地方
    • 品种列在其章节内(无论是否有分节)
    • 如果品种有品种,则会列出
  3. 列出每个原籍地的群组

    /地点/组/品种

    • 首先放置
    • 地方内的群组
    • 群内育种
  4. 选项:

    • 基于正则表达式的东西,如上所述。这很有吸引力,但我不确定如何表达"如果它有一个,请将该品种放入一个部分,否则将其放入它所属的组中"而不是"将该品种放入其组中,无论该部分是什么,如果有的话#34;。
    • XPath 2.0是可能的,但它需要我列举所有的可能性,如第一个例子所示:

      (/组| /组/节| /组/部分/子部分)/地点/(品种|品种/多种|品种/品种/ subvariety)

      这似乎不优雅。考虑地点是否是可选的,例如......
    • 基于Linux / UNIX命令行语法的东西:

      组[/部分[/小节]] /品种[/品种[/ subvariety]]

    有任何建议或想法吗?

0 个答案:

没有答案