Систематизация источников и данных по нанотехнологиям

Особенности наноматериалов и их классификация. Использование Uniform Description System, иерархия системы классификаторов. Разработка онтологии и графического интерфейса. Настройка веб-сервисов Open Semantic Framework, реализация Bootstrap Tree View.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 11.08.2017
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Рис. 12. Возможные варианты настройки библиотеки Bootstrap Tree View

Как видно из рисунка 12, иерархия дерева может быть с различными настраиваемыми иконками, ярлыками, разными фонами, типами шрифтов. Поскольку данный вариант визуализации является более функционально насыщенным, было решено подключить данную библиотеку к интерфейсу для отображения дерева разрабатываемой таксономии. Таким образом, интерфейс принял вид, как на рисунке 13.

Рис. 13. Реализации дерева таксономии с помощью Bootstrap Tree View

Помимо этого, библиотека Bootstrap Tree View позволяет подключить дополнительный функционал к содержимому дерева. Используя опыт с веб-портала BIO, было решено подключить форму поиска. Интересно отметить, что на выбор существует несколько реализаций поиска. Можно реализовать возможность поиска Selectable Tree по первым буквам и раскрытием найденного элемента в узле дерева. Другой вариант организации поиска заключается в простом отображении результатов, если искомый элемент найден, Searchable Tree, а также другие варианты, такие как Expandible Tree, Checkable Tree и другие.

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

Рис. 14. Реализация поиска на основе Selectable Tree

4.5 Экспорт и импорт таксономий

Заключительной задачей, входящей в план работы над магистерской работой, стала организация возможности экспорта и импорта таксономий в формате json.

Вначале был осуществлен поиск готовых решений для решения задачи. Как оказалось, модулей именно с указанным функционалом нет. Исключением является модуль Migrate для Drupal 7, который предоставляет набор зарезервированных функций и api, с помощью которых можно написать свой модуль с нужным функционалом. Было принято решение создать собственные модули для реализации задач по экспорту и импорту термов на базе api Drupal 7.

Применяя набор системных функций, вначале был реализован модуль по экспорту данных (Приложение 1). Механизм работы модуля следующий. Вначале с помощью встроенной функции Drupal taxonomy_get_vocabularies() получаем список имеющихся таксономий в базе данных сайта. Функция возвращает массив объектов словарей таксономии. Далее помещаем содержимое массива в форму на странице в выпадающий список :

$form['select'] = array('#type' => 'select', '#options' => $names_vocs,

'#id'=>'id_select');

По нажатию на кнопку экспорта, на выпадающий список прикрепляем обработчик событий, который будет срабатывать при каждом изменении выбранного элемента (рис. 15). Используя Api Drupal taxonomy_get_tree(($vid, $parent, $max_depth, $load_entities), далее возвращаем массив с иерархией указанного словаря, где:

? $vid - id словаря таксономии (обязательный параметр);

? $parent - id термина таксономии, именного для данного термина и будет построена иерархия (необязательный параметр), по умолчанию равно 0, что выводит всю иерархию таксономии указанного словаря;

? $max_depth - указывает на число уровней иерархии, по умолчанию принимает NULL, что соответствует неограниченному уровню иерархии (не обязательный параметр);

? $load_entities - булевское значение, по умолчанию FALSE, значения забираются из таблицы taxonomy_term_date, для экономии памяти и время выполнения (необязательный параметр).

Рис 15. Выпадающий список с перечнем имеющихся таксономий

Далее, перебирая в цикле элементы полученного словаря, начинается разбор элементов на дочерние и родительские. Данная возможность реализуется при встроенной функции getChildren($item->tid, $item->vid), возвращает массив с дочерними терминами таксономии, где

? $tid - id текущего термина (обязательный параметр);

? $vid - id словаря, для ограничения поиска (необязательный параметр).

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

После того, как массив с дочерними и родительскими элементами полностью сформирован, в работу включается функция json_encode(), с помощью которой создается файл json. Структурно файл полностью отображает ту иерархию, которая задается при создании таксономии с помощью инструментария Drupal.

Часть примера того, как выглядит программно сформированный файл, приведен ниже:

"name_voc": "Nanomaterials",

"date": "04.04.2017",

"items": [

{

"name": [

"Nanomaterial",

{

"name": [

"Bullk_nanomaterial"

],

"description": "макроскопический материал с внутренней наноструктурой",

"weight": "0"

},……

Полный текст json-файла, полученного при экспорте приведенной таксономии с помощью разработанного модуля, приведен в Приложении 3.

Далее была проведена работа по созданию отдельного модуля, с помощью которого можно импортировать ранее выгруженную таксономию, на сайт (Приложение 2). Также была создана простая форма, в которой имеется поле для выбора импортируемого файла, кнопка «загрузить» файл на сервер и кнопка «импортировать таксономию», которая осуществляет непосредственное создание новой таксономии из файла в формате json согласно ее структуре и ее запись в базу данных (рис. 16)

Рис 16. Форма импорта

Нужно отметить, что предусмотрено ограничение по загрузке типов файлов через данную форму. В настройках поля выбора документов предусмотрена загрузка лишь файлов в формате json. Данное ограничение позволит избежать возможных инъекций или иных нежелательных вмешательств к базе данных сайта, дабы избежать вредоносных операций.

Всю работу по разбору импортируемого файла выполняет встроенная в язык программирования рнр, функция json_decode (). Она Принимает закодированную в JSON строку из импортируемого файла и преобразует ее в переменную PHP.

Далее, используя функцию api Drupal taxonomy_vocabulary_save(), происходит создание нового словаря, а также присвоение ему машинного имени. Машинное имя для новой таксономии берется из названия импортируемого файла. Ключевую роль играет функция taxonomy_term_save(), с помощью которой программно создаются термины для указанного словаря. Важно отметить, что для сохранения иерархии древовидной структуры при разборе json-строки используется рекурсия.

На текущий момент разработанные модули прошли процедуру тестирования. С их помощью были экспортированы с одной машины и загружены на сайт другой машины таксономии.(рис. 17)

Рис. 17. Пример таксономии, созданной при импорте данных в формате json

Заключение

Создана онтологическая модель по свойствам наноматериалов в соответствии с рекомендациями UDS, разработанными комиссией по численным данным (CODATA) и Международным научным советом (ICSU).

Разработана оригинальная таксономия для предметной области “наноматериалы”, включающая 70 терминов.

На основе открытых программных продуктов OSF и Drupal 7 создан прототип веб-приложения для работы с таксономиями, включающий функции визуализации, поиска, импорта и экспорта данных в формате JSON. Текущий вариант приложения размещен на бесплатном домене “семантик-веб.рус”. Для просмотра содержимого таксономии необходимо зарегистрироваться в личном кабинете на сайте, далее перейти на страницу http://семантик-веб.рус/view_nano.html .

В дальнейшем предполагается развитие онтологии, усовершенствование структуры таксономии и доработка веб-приложения. В частности, сюда входят задачи по “связыванию” разработанной онтологии и созданной таксономии средствами Drupal, то есть процесс маппинга полей, а также доработка интерфейса страницы.

Список использованных источников

1. А.Н. Бездушный, А.А. Вежневец, В.А. Серебряков, А.В. Шкотин.

Метаданные: определение и использование. URL: www.elbib.ru/index.phtml?page=elbib/rus/methodology/metadata (Дата обращения 24.04.2017)

2. IUPAC Compendium of Chemical Terminology - the Gold Book, URL:

http://goldbook.iupac.org/ (дата обращения 24.04.2017)

3. А.О. Еркимбаев, В.Ю. Зицерман, Г.А. Кобзев, В.А. Серебряков, К.Б. Теймуразов. Технология научных публикаций в среде «Открытых связанных данных»//Научно-техническая информация. Серия 1. - 2013. - №12. - С. 1-11.

4. А.О. Еркимбаев, В.Ю. Зицерман, Г.А. Кобзев. Роль метаданных в создании и использовании информационных ресурсов о свойствах веществ и материалов// Научно-техническая информация. Серия 1. - 2008. - №11. - С. 13- 19.

5. J.G. Kaufman, E.F. Begley. A Data Interchange Markup Laguage//Advanced Materials & Processes. - November 2003.- P. 35-36.

6. А.В. Елецкий, А.О. Еркимбаев, В.Ю. Зицерман, Г.А. Кобзев, М.С. Трахтенгерц. Теплофизические свойства наноразмерных объектов: систематизация и оценка достоверности данных//Теплофизика высоких температур. - 2012. - Т. 50. - №4. - С. 524-532.

7. Н.М. Буйлова, А.В. Елецкий, В.Ю. Зицерман, Г.А. Кобзев. Систематизация источников и данных по нанотехнологиям//Научно-техническая информация. Серия 1. - 2013. - №11. - С. 31-42.

8. J. Rumble, S. Freiman. Describing nanomaterials: meeting the needs of diverse data communities//Data Science Journal. - 2012. - V.11. - P. AMSD1-6.

9. J. Rumble, S. Freiman, C. Teague. The Description of Materials. ICSU-CODATA Workshop on Nanomaterials February 2012.

10. Uniform Description System for Materials On the Nanoscale. Prepared by the CODATA-VAMAS Working Group On the Description of Nanomaterials.Version 1.0, 1 February 2015. URL: www.codata.org/nanomaterials (дата обращения 24.04.2017)

11. NPO: NanoParticle Ontology for Cancer Nanotechnology Research. URL:

www.nano-ontology.org/ (дата обращения 24.04.2017).

12. И. Карпова, Е. Порысева, Г. Казаков, Э. Кольцова. Разработка онтологии в области нанокомпозиционных материалов//Информационные ресурсы России. - 2012. - №2. С. 5-9.

13. ISO/TR 11360:2010, Nanotechologies - Methodology for the classification and categorization of nanomaterials.ISO technical committee ISO/TC 229, Nanotechologies. Retrieved from the World Wide Web, October 20, 2012.

URL:www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=55967 (дата обращения 24.04.2017).

14. А.И. Гусев Наноматериалы, наноструктуры, нанотехнологии. 2 изд., М.: Физматлит, 2007, 416 с.

15. T. Ashino, M. Fujita. Definition of a web ontology for design-oriented material selection//Data Science Journal. - 2006. - V. 5. - P. 52-63.

16. Семантический веб и микроформаты. URL: http://www.intuit.ru/studies/courses/611/467/lecture/28810 (дата обращения 24.04.2017).

17. Semantic Web как новая модель информационного пространства Интернет. URL: http://shcherbak.net/semantic-web-kak-novaya-model-informacionnogo-prostranstva-internet/ (дата обращения 24.04.2017)

18. Bootstrap 3 - Сетка. URL: https://itchief.ru/lessons/bootstrap-3/22-the-grid-system-twitter-bootstrap-3 (дата обращения 24.04.2017).

19. Карпова И., Порысева Е., Казаков Г., Кольцова Э. Разработка онтологии в области нанокомпозиционных материалов. «Информационные ресурсы России» №2, 2012. URL: http://www.aselibrary.ru/press_center/journal/irr/irr3648/irr36483677/irr364836773678/irr3648367736783687 (дата обращения 24.04.2017).

20. Иванов В.В., Поляков В.Н., Красильникова Ю.О. Проблемы разработки прикладной онтологии для области наноматериалов. Сборник тезисов и статей Российско-Германской молодежной дистанционной научной школы «Актуальные и перспективные направления создания систем, обеспечивающих семантический анализ данных в режиме реального времени». С. 35 - 49.

URL: http://www.workshop-misis.ru/documents/ros_germ/theses.pdf (дата обращения 24.04.2017).

21. URL : http://www.radiotec.ru/catalog.php?cat=jr7&art=12343 (Дата обращения 24.04.2017)

22. Артемьева И.Л., Рябченко Н.В. Модель онтологии предметной области наноматериалы. URL: http://cyberleninka.ru/article/n/model-ontologii-predmetnoy-oblasti-nanomaterialy (дата обращения 24.04.2017).

23. Официальный сайт документации по open semantic framework URL: http://wiki.opensemanticframework.org/index.php/Initial_OSF_for_Drupal_Configuration (дата обращения 24.04.2017)

24. Б.В.Добров, В.В.Иванов, Н.В.Лукашевич, В.Д.Соловьев.

Онтологии и тезаурусы: модели и инструменты, приложения. Учебное пособие. М. 2009.

25. Функции, облегчающие работу с Drupal. URL: https://drupalfly.ru/station/10-functions-Drupal-7-work-taxonomy#tax3 (дата обращения 24.04.2014)

26. Официальный сайт Semantic Web. URL : http://semanticweb.org/wiki/Main_Page.html (дата обращения 24.04.2017).

27. Тим Бернерс-Ли, Джеймс Хендлер и Ора Лассила. Новая форма содержания Сети, понятная компьютерам, произведет революцию в ее возможностях. URL : http://lpcs.math.msu.su/~zolin/sw/semantic_web_rus.html (дата обращения 24.04.2017).

28. T. Berners-Lee, J. Hendler, O. Lassila. The Semantic Web // Scientific American. 2001. V. 284. No. 5. P. 28-37.

29. Сайт ООО "ТриниДата", URL: http://trinidata.ru/tech_opportunities.htm (дата обращения 24.04.2017).

30. Презентация на тему "Технологии Semantic Web". URL: http://www.alik.su/articles/semantic-web/semantic-web-2.pdf (дата обращения 24.04.2017).

31. Официальный сайт международной организации CODATA. URL: http://www.codata.org/uploads/Uniform_Description_System_Nanomaterials-Published-v01-15-02-01.pdf (дата обращения 24.04.2017)

Приложения

Приложение 1 - Код модуля export_taxonomy

name = export_taxonomy

description = Export taxonomy

dependencies[] = taxonomy

core = 7.x

configure = admin/structure/taxonomy/export_taxonomy

<?php

/** *

* hook_menu().

*/

function export_taxonomy_menu() {

$items['admin/structure/taxonomy/export_taxonomy'] = array(

'title' => 'export terms taxonomy',

'page callback' => 'drupal_get_form',

'page arguments' => array('export_taxonomy_form'),

'access arguments' => array('administer site configuration'),

);

return $items;

}

/** button for start import

*

*/

function export_taxonomy_form($form, &$form_state) {

//get all vocabulary from drupal

$vocs = taxonomy_get_vocabularies();

$names_vocs = Array();

foreach ($vocs as $iter)

{

//save names vocabulary

$names_vocs[$iter->vid] = $iter->name;

}

//insert and view all exist vocabulary into select list

$form['select'] = array(

'#type' => 'select',

'#options' => $names_vocs,

'#id'=>'id_select',

);

//add to form button for start export

$form['button'] = array(

'#id' => 'btn_export',

'#type' => 'submit',

'#value' => 'Export',

);

if (isset($form_state['hrefToFile'])&& $form_state['hrefToFile']!='') {

$form['a'] = array(

'#id' => 'hrefToFile',

'#href' => $form_state['hrefToFile'],

'#type' => 'link',

'#download' => '',

'#title' => 'Скачать',

);

}

return $form;

}

function export_taxonomy_form_submit($form, &$form_state) {

//debug($form_state['complete form']['select']['#options'][$form_state['values']['select']]);

$name = $form_state['complete form']['select']['#options'][$form_state['values']['select']];

$all_elements = taxonomy_get_tree($form_state['values']['select']);

//debug($all_elements);

$parents = array();

$object = array(

'name_voc'=>$name,

'date' => date('d.m.Y'),

);

foreach ($all_elements as $item)

{

if($item->parents[0] == 0) {

//$parents[] = $item;

$childrens = getChildren($item->tid, $item->vid);

$name_ = [];

$name_[] = $item->name;

$combined = array_merge($name_, $childrens);

$obj = (object)array(

'name' => $combined,

'description' => trim(strip_tags($item->description)),

'weight' => $item->weight,

);

$parents[] = $obj;

}

}

$object["items"] = $parents;

$object = (object)$object;

$parents = json_encode($object, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

//debug($parents);

$file = file_save_data($parents, 'public://' .$name. '.json',FILE_EXISTS_REPLACE );

$form_state['rebuild'] = TRUE;

$form_state['hrefToFile']= file_create_url($file->uri);

return $form;

}

function getChildren($tid, $vid)

{

$children = [];

$children_ = taxonomy_get_children($tid, $vid);

if(count($children_) > 0){

foreach ($children_ as $item) {

$name = [];

$name[] = $item->name;

$child = getChildren($item->tid, $item->vid);

$combined = array_merge($name, $child);

$obj = (object)array(

'name' => $combined,

'description' => trim(strip_tags($item->description)),

'weight' => $item->weight,

);

$children[] = $obj;

}

}

return $children;

}

<?php

function export_taxonomy_install() {

$url = file_create_url(file_default_scheme() . '://import');

if (!is_dir($url)) {

mkdir($url);

}

}

function export_taxonomy_uninstall() {

db_delete('variable')

->condition('name', 'taxonomy_export_%', 'LIKE')

->execute();

cache_clear_all();

}

Приложение 2 - Код модуля import_taxonomy

name = import_taxonomy

description = import taxonomy

dependencies[] = taxonomy

core = 7.x

configure = admin/structure/taxonomy/import_taxonomy

<?php

/**

*

* hook_menu().

*/

function import_taxonomy_menu() {

$items['admin/structure/taxonomy/import_taxonomy'] = array(

'title' => 'import terms taxonomy',

'page callback' => 'drupal_get_form',

'page arguments' => array('import_taxonomy_form'),

'access arguments' => array('administer site configuration'),

);

return $items;

}

/** button for start import

*

*/

function import_taxonomy_form($form, &$form_state) {

//add to form button for start import

/* $form['button'] = array(

'#id' => 'btn_import',

'#type' => 'submit',

'#value' => 'Import',

);*/

//add to form upload interface

$form['file'] = array(

'#type' => 'managed_file',

'#title' => 'Import',

'#description' => 'Выберите файл с расширением json',

'#upload_location' => 'public://',

'#upload_validators' => array(

'file_validate_extensions' => array('json'),

),

'#default_value' => variable_get('import_taxonomy'),

);

//add to form button for load file json

$form['submit'] = array(

'#type' => 'submit',

'#value' => 'Импортировать таксономию',

);

return $form;

}

function import_taxonomy_form_submit($form, &$form_state) {

// Delete old file

$old_file_fid = variable_get('import_taxonomy');

if ($old_file_fid && $old_file_fid != $form_state['values']['file']) {

$old_file = file_load($old_file_fid);

file_usage_delete($old_file, 'import_taxonomy');

file_delete($old_file);

}

$file = file_load($form_state['values']['file']);

$fileValues = json_decode(implode(file($file->uri)));

// $fileName = $fileValues->name_voc;

// $fileName = $file->filename;

//$machineName = substr($fileName, 0, -5);

$machineName = $fileValues->name_voc;

try {

file_delete($file);

}catch (ErrorException $exception){

}

$new_vocab = (object) array(

'name' => $machineName,

'machine_name' => strtolower($machineName)

);

taxonomy_vocabulary_save($new_vocab);

if(count($fileValues->items) > 0){

foreach ($fileValues->items as $child){

createNode($child, $new_vocab->vid, 0);

}

}

}

function createNode($item, $vid, $parent){

$termObj = (object) array(

'name' => $item->name[0],

'vid' => (int)$vid,

'description' => $item->description,

'weight' => (int)$item->weight,

'parent' => $parent ? (int)$parent : 0

);

$term = taxonomy_term_save($termObj);

if(count($item->name) > 1){

for ($i=1,$j=count($item->name); $i < $j; $i++)

{

$child = $item->name[$i];

createNode($child, $vid, $termObj->tid);

}

}

}

<?php

function import_taxonomy_install() {

$url = file_create_url(file_default_scheme() . '://import');

if (!is_dir($url)) {

mkdir($url);

}

}

function import_taxonomy_uninstall() {

db_delete('variable')

->condition('name', 'taxonomy_import_%', 'LIKE')

->execute();

cache_clear_all();}

Приложение 3 - пример экспортированного файла json

{

"name_voc": "Nanomaterials_v1",

"date": "04.04.2017",

"items": [

{

"name": [

"Nanomaterial",

{

"name": [

"Bulk_nanomaterial"

],

"description": "макроскопический материал с внутренней наноструктурой",

"weight": "0"

},

{

"name": [

"Nanoobject",

{

"name": [

"Nanocrystal"

],

"description": "Это нанокристалы текст",

"weight": "0"

}

],

"description": "Нанообъекты",

"weight": "0"

}

],

"description": "макроскопический материал с внутренней наноструктурой",

"weight": "2"

}

]

}

Размещено на Allbest.ru


Подобные документы

  • История развития веб-технологий и существующие проблемы. Назначение и установка Symfony Framework. Создание приложения на основе технологий Symfony Framework. Установка дополнительных библиотек через composer, верстка шаблона, настройка сервисов.

    дипломная работа [712,6 K], добавлен 05.07.2017

  • Описание структуры обучающего блока. Проектирование его алгоритма и лингвистического и информационного обеспечения. Организация его взаимодействия с базой данных. Разработка графического интерфейса. Программная реализация основных функций приложения.

    дипломная работа [2,1 M], добавлен 20.12.2015

  • Разработка web-сервиса как услуги, предоставляемой пользователю. Продажа товара (автомобилей) в Интернете, проблема выбора. Онтологии как часть концепции Semantic Web. Применение онтологий, их основные типы и свойства. Особенности реализации онтологии.

    курсовая работа [57,4 K], добавлен 17.04.2012

  • Актуальность и значимость создания web-сайта образовательного учреждения - школы. Функциональное моделирование предметной области. Основные этапы разработки сайта. Программная реализация. Установка, настройка и работа с локальным сервером Open Server.

    дипломная работа [990,5 K], добавлен 01.01.2018

  • Роль распределенных вычислительных систем в решении современных задач. Инструментальная система DVM для разработки параллельных программ. Средства построения формальной модели графического интерфейса. Требования к графическому интерфейсу DVM-системы.

    курсовая работа [2,7 M], добавлен 15.10.2010

  • Разработка программы-модели в среде "Adamview" для имитации стратегии и наглядной иллюстрации работы программы. Настройка сети; описание эмулятора стратегии и экранных форм интерфейса оператора. Структурная схема распределённой системы управления.

    курсовая работа [2,6 M], добавлен 21.01.2013

  • Общие сведения о платформе Microsoft NET Framework. Разработка приложения "Поставка и реализация программного обеспечения", содержащего базу данных о каталогах адресов в Internet. Описание логической структуры. Требования к техническому обеспечению.

    курсовая работа [2,4 M], добавлен 28.06.2011

  • Характеристика основных потоков данных, существующих на предприятии. Способы и средства для разработки программного обеспечения. Проектирование пользовательского интерфейса. Разработка слоя взаимодействия с базой данных. Разработка слоя бизнес сервисов.

    дипломная работа [750,8 K], добавлен 10.07.2017

  • Сведения о платформе Microsoft.NET Framework, способы и методы доступа к базам данных и системам управления базами данных, особенности проектирования и программирования баз данных средствами выше упомянутой платформы. Спроектировано приложение "Articles".

    курсовая работа [5,9 M], добавлен 20.03.2011

  • Использование автоматизированных баз данных в деятельности бюро по найму - способ облегчения деятельности сотрудников и повышения качества обслуживания клиентов. Разработка пользовательского интерфейса главной кнопочной формы информационной системы.

    курсовая работа [1,4 M], добавлен 25.04.2019

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.