Создание, визуализация и запрос простых структур данных - PullRequest
0 голосов
/ 03 сентября 2010

Простые и общие древовидные структуры данных

Пример структуры данных

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 пальца (Пусть Джон будетЧеловек)


Интересно, есть ли какой-нибудь инструмент для его определения parseable для автоматического создания унаследованных данных и рисования деревьев такого типа, (сплюс такой доступ к данным, если это возможно ..)

Его можно нарисовать вручную с помощью, например, FreeMind, но AFAIK не позволяет вам определять тип данных или структуры для автоматически создает унаследованную ветвь элементов, поэтому действительно раздражает необходимость повторять и повторять структуру путем копирования (и с риском ошибки).Повторная работа над повторными данными (человек, выполняющий повторный код), это ошибочная функция.

Поэтому я хотел бы написать данные на правильном языке, который позволил бы мне повторно использовать их для запросов и визуализация , если все данные находятся в XML или классах Java, или в файле базы данных и т. Д., Есть какой-нибудь инструмент для просмотра дерева и выполнения запроса?

PD: создание вложенных папок в файловой системе и использование Norton Commander в режиме дерева, я надеюсь, не вариант (просто потому, что его нужно создавать вручную)

Ответы [ 3 ]

2 голосов
/ 03 сентября 2010

Ваш ответ в основном будет зависеть от того, какие навыки программирования у вас уже есть и какие навыки вы готовы приобрести.Я могу рассказать вам, что я буду делать с тем, что знаю.

Я думаю, что для рисования деревьев вам нужен пакет LaTeX, такой как qtree .Если вам не нравится этот, есть множество других там.Вам нужно было бы написать скрипт на любом вашем любимом языке сценариев, чтобы проанализировать ваш ввод в код LaTeX для генерации деревьев, но это может быть легко сделано с помощью менее 100 строк на большинстве языков, если я правильно понимаю ваши намерения.Я бы определенно рекомендовал хранить ваши данные в формате XML с использованием библиотеки, подобной Ruby's REXML , или любого другого вашего любимого языка сценариев.

Если вы хотите создавать больше интерактивных деревьев, ознакомьтесь с Adobe Flex Framework .Опять же, если вам не нравится этот конкретный фреймворк, есть куча других (я рекомендую блог FlowingData ).

Надеюсь, это поможет, и я не ошибочно понял вашевопрос.

1 голос
/ 09 сентября 2010

Структура данных, которую Вы описываете, выглядит так, как будто она может соответствовать формату xml.Взгляните на Exist XML database , и, если можно так выразиться, это самая полная 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
0 голосов
/ 07 сентября 2010

Редактор XML-схем с визуализацией - это, пожалуй, то, что я ищу

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

проверка его ..

...