?

Log in

No account? Create an account

Previous Entry Share Flag Next Entry
Некоторые бесчеловечные эксперименты над .15926 Editor v1.2.
ko444evnik wrote in dot15926

Мелкая программка на Python, которая при исполнении в консоли редактора...

# ko4evnik 2013-03-01

import re
import iso15926.kb as kb

part2 = kb.part2_itself

outfile = file('15926_to_graphvize.dot', 'w')
outfile.write('digraph graph15926entities{\nrankdir=LR\nnode[shape=box]\n')

entities=sorted(kb.part2_itself)

regex = re.compile('part2:')

for entity in entities:
  name = regex.sub('',entity)
  outfile.write(name+' [label="'+name+'"]\n')

outfile.write('\nedge[style=filled,arrowhead=dot]\n')

for entity in entities:
  superclasses = kb.part2_itself[entity]['supertypes']
  name_entity = regex.sub('',entity)
  for superclass in superclasses:
    name_superclass = regex.sub('',superclass )
    outfile.write(name_superclass +' -> '+name_entity+'\n')

outfile.write('\nedge[style=dotted,arrowhead=normal,arrowtail=none]\n')

for entity in entities:

 name_entity = regex.sub('',entity)  
 if 'classifier' in kb.part2_itself[entity]: 
   classifiers = kb.part2_itself[entity]['classifier']
   for classifier in classifiers:
     name_classifier  = regex.sub('',classifier )
     outfile.write(name_classifier +' -> '+name_entity+'\n')

outfile.write('\n}')
outfile.close()


...пишет такой вот .dot-файл
по которому Graphviz рисует такую вот картинку 4000х5000:


  • 1
Ай, какая прелесть!

Это такое повторение прошлогоднего варианта с "нерекомендуемыми к употреблению переводами":

(картинка раза в полтора побольше).

Был вариант еще и с ролями, но он размером за 12000 пикселей и плохо читается визуально.

Тут ещё и краткость реализации: тридцать строчек программы, включая вызов графвиза.

Без переводов и вправду лучше.

строго говоря, могло быть и короче, если бы не приходилось у каждой строчки с именем префикс "part2:" выкусывать.

Что и требовалось

Прекрасно. Еще немного осталось сделать - дать вот такой же пользовательский интерфейс для редактирования и мэппирования. А также хорошо над методами распутывания подумать...

Re: Что и требовалось

под "методами распутывания" Вы подразумеваете в данном контексте что?

Re: Что и требовалось

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

Опишу по-другому - было бы здорово дерево загрузить в yED (читает форматы graphml, gml, xgml, xls), тогда можно было бы использовать более удобные методы компоновки графа: Ortohonal, Organic, Circular - не говоря уже про возможность схлопывания/расхлопывания узлов и дальнейшего re-use.

>> было бы здорово дерево загрузить в yED

этого то сколько угодно:
http://yadi.sk/d/nsJE8Cc032qJX
(15926_to_graphml-mod.graphml - 250 кб - результат работы переделанного скрипта, слегка обработанный напильником в самом yEd)

Характеристики, свойства

(Вид)Характеристики (ПронумерованноеМножествоХарактеристик, ОбластьЗначенияХарактеристики) - это качественные и количественные или здесь вводятся свои названия этим характеристикам (синонимы)?

Re: Характеристики, свойства

A [property] is a [class_of_individual] that is a member of a continuum of a [class_of_property]. The [property] may be quantified by mapping to a number on a scale.

NOTE 1 A member of a [property] is a [possible_individual] that has the same degree or magnitude of the quality or characteristic represented by the [property] as other members.
NOTE 2 The types of characteristic or quality, such as temperature or density, are instances of [class_of_property].
NOTE 3 Duplicate properties (e.g. that map to the same number on the same scale) should not be created within the same data store.

EXAMPLE A particular degree of hotness can be represented as an instance of [property].

----

A [class_of_property] is a [class_of_class_of_individual] whose members are instances of [property].

EXAMPLE 'Temperature' is an example of [class_of_property].

---

A [property_space] is a [class_of_property] whose members are a coherent continuum of [property].

EXAMPLE 1 The set of temperature properties, known as temperature, is a [property_space].
EXAMPLE 2 The members of the pressure and flow rate [class_of_property] that fall on a particular pump curve is a [property_space].

Вс же переводы - это кошмар какой-то. У Вас никогда не было желания перевести на русский ключевые слова Ваших любимых языков программирования?

всегда было :)
потому что задачу и шаги ее решения я в любом случае формулирую себе на русском, а на "любимый/нелюбимый язык программирования" всего лишь перевожу.

Ну так и не пытайтесь пародировать структуру ключевых слов языка программирования.

Зачем Вам такая нерусская и неправильная конструкция, как "ПронумерованноеМножествоХарактеристик"? Оно же не пронумерованное вовсе в русском значении слова "пронумерованный"! Это ж Вы людей в заблуждение вводите.

Вы её называйте по-русски правильно. А что её обозначает какое-то сочетание английских букв - это придётся просто выучить.

Re: Характеристики, свойства

Для чего вводятся новые термины (class_of_property и т.д.)? "Температура" - это множество. Надмножество - "Физические величины". "Температура 36.6" - это подмножество множества "Температура:По градусам Цельсия".

В Викисловаре (http://ru.wiktionary.org/wiki/Категория:Характеристика) классифицируют через http://ru.wiktionary.org/wiki/Категория:Свойство и ‎ http://ru.wiktionary.org/wiki/Категория:Величина‎

Re: Характеристики, свойства

Вам никто не препятствует для собственных задач делать по своему.

  • 1