0

データ構造のような単純で一般的なツリー

データ構造の例

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 シェロブ (クモ)

クエリ..「指の数」

数字 = 1*4*4 + 1*4*4 + 1*4*5 + 3*6*1 + 2*6*1 = 82 本の指 (Jon を人間とする)


継承されたデータを自動作成するために解析可能に定義し、この種のツリーを描画するためのツールがあるかどうか疑問に思います(可能であれば、この種のデータアクセスを作成するプラスで..)

FreeMind などを使用して手動で描画することもできますが、データ型や構造を定義してアイテムの継承されたブランチを自動的に作成することはできないため、コピーして構造を繰り返し繰り返す必要があるのは本当に面倒です (間違いのリスクがあります)。 . Repeated Work over Repeated Data (人間が実行する繰り返しコード) は、バグのある機能です。

したがって、すべてのデータが XML、Java クラス、またはデータベース ファイルなどにある場合は、クエリと視覚化に再利用できる正しい言語でデータを書きたいと思います。ツリーを表示するためのツールがあります。クエリを作成しますか?

PD : ファイルシステムにネストされたフォルダを作成し、ツリー ビューで Norton Commander を使用することはオプションではありません (手動で構築する必要があるため)

4

3 に答える 3

2

あなたの答えは、あなたがすでに持っているプログラミングスキルと、どのスキルを習得したいかによって決まります。私が知っていることで私が何をするかをあなたに言うことができます。

木を描くにはqtreeのような LaTeX パッケージが必要だと思います。これが気に入らなければ、他にもたくさんあります。入力を解析して LaTeX コードに変換し、ツリーを生成するには、お気に入りのスクリプト言語でスクリプトを作成する必要がありますが、意図を正しく理解していれば、ほとんどの言語で 100 行未満で簡単に実行できます。Ruby のREXMLのようなライブラリーや、お気に入りのスクリプト言語にあるものを使用して、データを XML 形式で保存することを強くお勧めします。

よりインタラクティブなツリーを生成したい場合は、Adobe Flex Frameworkを調べてください。繰り返しになりますが、この特定のフレームワークが気に入らない場合は、他にもたくさんあります (ブログFlowingDataをお勧めします)。

これがお役に立てば幸いです。私はあなたの質問を惨めに誤解していませんでした。

于 2010-09-03T16:22:54.987 に答える
1

あなたが説明しているデータ構造は、xml形式に収まるように見えます。Exist XMLデータベースを見てください。そう言えば、それは最も完全なxmlデータベースです。それはあなたが速く始めるための多くのツールが付属しています!XQuery Sandbox管理httpインターフェースのオプションのように。

データセットの例1ホーマーシンプソン、1ラルフウィガム、2ジョンスキート、3アトミックアント、2シェロブ(クモ)

私は、の2つのインスタンスjon skeet、の3つのインスタンス、Atomic antおよび2つのインスタンスがあると想定しています。Shelob

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
于 2010-09-09T18:57:27.090 に答える
0

視覚化されたXMLスキーマエディタはおそらく私が探しているものです

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

それをチェックします。

于 2010-09-07T16:53:57.090 に答える