【问题标题】:Creating, Visualizing and Querying simple Data Structures创建、可视化和查询简单的数据结构
【发布时间】:2023-04-03 12:43:01
【问题描述】:

简单通用的树状数据结构

数据结构示例

Animated Cartoons have 4 extremities (arm, leg,limb..)
Human have 4 ext.
Insects have 6 ext.
Arachnids have 6 ext.

Animated Cartoons have 4 by extremity
Human have 5 by ext.
Insects have 1 by ext.
Arachnids have 1 by ext.

某种实现

Level/Table0 
              Quantity, Item
Level/Table1
              ItemName, Kingdom    
Level/Table2 
              Kingdom, NumberOfExtremities    
Level/Table3 
              ExtremityName, NumberOfFingers

示例数据集

1 荷马辛普森,1 拉尔夫威格姆,2 乔恩 飞碟,3 原子蚁,2 Shelob(蜘蛛)

查询..“手指数”

数字 = 1*4*4 + 1*4*4 + 1*4*5 + 3*6*1 + 2*6*1 = 82 根手指(让乔恩成为人类)


我想知道是否有任何工具可以定义它可解析用于自动创建继承的数据,并绘制这种树,(加上制作这种树数据访问,如果可能的话..)

它可以手动用例如 FreeMind 来绘制,但是 AFAIK 它不允许你定义数据类型或结构来自动创建项目的继承分支,所以真的很烦人必须通过复制来重复和重复一个结构(并且有出错的风险)。重复数据的重复工作,(人类运行重复的代码),这是一个错误的功能。

所以我想用正确的语言编写数据,让我可以重复使用它 对于查询和可视化,如果所有数据都在 XML、Java 类或数据库文件等中。是否有一些工具可以查看树并进行查询?

PD : 在文件系统中创建嵌套文件夹并在树视图中使用 Norton Commander 不是一种选择,我希望(只是因为它必须手动构建)

【问题讨论】:

    标签: sql data-structures visualization mindmapping


    【解决方案1】:

    您的答案主要取决于您已经具备哪些编程技能以及您愿意获得哪些技能。我可以告诉你我会用我所知道的来做什么。

    我认为要绘制树,您需要像 qtree 这样的 LaTeX 包。如果你不喜欢这个,还有很多其他的。您必须使用您最喜欢的脚本语言编写一个脚本,以将您的输入解析为 LaTeX 代码以生成树,但如果我正确理解您的意图,在大多数语言中这可以很容易地用不到 100 行来完成。我绝对会推荐使用像 Ruby 的 REXML 这样的库或任何你最喜欢的脚本语言有的以 XML 格式存储你的数据。

    如果您希望生成更多交互式树,请查看Adobe Flex Framework。同样,如果你不喜欢这个特定的框架,还有很多其他的框架(我推荐博客 FlowingData)。

    希望这会有所帮助,我没有严重误解您的问题。

    【讨论】:

    • +1 因为您理解正确,那么您的答案是用第一语言创建 DataStructure(可能是准备好回答查询的语言),然后用第二语言编写脚本以构建 LaTeX代码输出(第三语言),这是一条很长的路,但可以工作
    • 我找到了这个graphviz.org,它不是一个完整的解决方案,但可以作为 LaTeX 的一个选项
    【解决方案2】:

    您描述的数据结构看起来适合 xml 格式。看看Exist XML database,如果可以这么说,它是最完整的xml数据库。它带有许多工具,可让您快速入门!像管理 http 界面中的 XQuery Sandbox 选项。

    示例数据集 1 Homer Simpson、1 Ralph Wiggum、2 jon skeet、3 Atomic ant、2 Shelob(蜘蛛)

    我假设jon skeet 有 2 个实例,Atomic ant 有 3 个实例,Shelob 有 2 个实例

    这是一个 XQuery 示例:

    let $doc := 
    <root>
        <definition>
            <AnimatedCartoons>
                <extremities>4</extremities>
                <fingers_per_ext>4</fingers_per_ext>
            </AnimatedCartoons>
            <Human>
                <extremities>4</extremities>
                <fingers_per_ext>5</fingers_per_ext>
            </Human>
            <Insects>
                <extremities>6</extremities>
                <fingers_per_ext>1</fingers_per_ext>
            </Insects>
            <Arachnids>
                <extremities>6</extremities>
                <fingers_per_ext>1</fingers_per_ext>
            </Arachnids>
        </definition>
    
        <subject><name>Homer Simpson</name><kind>AnimatedCartoons</kind></subject>
        <subject><name>Ralph Wiggum</name><kind>AnimatedCartoons</kind></subject>
        <subject><name>jon skeet</name><kind>Human</kind></subject>
        <subject><name>jon skeet</name><kind>Human</kind></subject>
        <subject><name>Atomic ant</name><kind>Insects</kind></subject>
        <subject><name>Atomic ant</name><kind>Insects</kind></subject>
        <subject><name>Atomic ant</name><kind>Insects</kind></subject>
        <subject><name>Shelob</name><kind>Arachnids</kind></subject>
        <subject><name>Shelob</name><kind>Arachnids</kind></subject>
    </root>
    let $definitions := $doc/definition/*
    let $subjects := $doc/subject
    
    (: here goes some query logic :)
    let $fingers := fn:sum( 
        for $subject in $subjects
        return (
            for $x in $definitions
            where fn:name($x) = $subject/kind
            return $x/extremities * $x/fingers_per_ext
            )
        )
    return $fingers
    

    【讨论】:

    • 我看到 XML 是路径,数据的层次结构比关系数据库更多的是 XML,但我正在寻找一个编辑/可视化工具,然后让我进行查询。更重要的是,在我的示例中,有四个或至少三个表,你只使用了两个,但也许是为了简化你的代码,无论如何 +1 的贡献!
    • 正确的 XML 看起来更像:
    【解决方案3】:

    具有可视化功能的 XML Schema Editor 也许是我正在寻找的东西

    http://en.wikipedia.org/wiki/XML_Schema_Editor

    检查它..

    【讨论】:

      猜你喜欢
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 2011-06-20
      • 2020-09-16
      相关资源
      最近更新 更多