Систематизация источников и данных по нанотехнологиям
Особенности наноматериалов и их классификация. Использование 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