Содержание
- Внесение своего вклада в проект
- Как всё работает?
- Голосование
- Блокировки
- Что мы понимаем под определением "Объект"
- Атрибуты объекта
- Наследование атрибутов
- Ограничения
- Добавление нового объекта
- Сравнения объектов
- Сортировка объектов
- Особенности сравнения некоторых типов данных
Внесение своего вклада в проект
Factopedia это открытая база с классифицированной информацией об объектах которые нас окружают. Эта база, вебсайт и даже этот текст был создан и поддерживается людьми со всего мира, энтузиастами, такими как ты. Благодоря им много людей может получить быстрый и бесплатный доступ к интересующей их информации и быстро сравнить объекты между собой тем самым быстро принять нужное решение. Именно на выбор мы тратим кучу времени каждый день, мы незнаем что выбрать и нам необходимо видеть сравнительную таблицу что бы принять конечное решение и не сомневаться в выборе. Мы часто задаёмся вопросом почему две, казалась бы, одинаковых вещи оцениваются по разному. Мы хотим "разобрать" каждый объект на мельчайшие "детали", что бы решать эти вопросы стало быстрее. Такая база так же очень важна что бы сберечь и передать знания об объектах будущему поколению. Получить информацию по некоторым вещам в этом мире очень сложно либо впринципе не возможно обычному человеку, поэтому мы призываем людей которые имеют доступ к такой информации поделится ей с обществом, ради общего блага. Учёные и исследователи которые ищут информацию о необходимым им объектам смогут получить её очень быстро, бесплатно и продолжить свои исследования.
Если вам понравилось то что мы делаем вы можете внести свой вклад в проект как волонтёр, вы можете
зарегистрироваться и начать редактировать Factopedia либо сделайте
пожертвование. Вы так же можете вносить правки как гость, без регистрации.
Как всё работает?
Гости и зарегистрированные пользователи могут вносить правки в любой
объект или
сравнение, могут обсуждать изменения. Каждый участник может проголосовать за то что бы принять изменения или отклонить. Участники могут подписываться на обновления что бы быстро видеть что происходит в интересующих их категориях.
Голосование
Принять или отклонить внесённые изменения решают участники путём голосования. В зависимости от внесённого вклада в проект вес голоса того или иного участника разный. Чем больше пользы пользователь внёс в проект тем его голос имеет больший вес. Когда определённая версия набрала критическое кол-во голосов, версия либо принимается либо откланяется. Изменения так же не могут быть приняты только большим кол-вом мелких голосов, либо малым кол-вом больших голосов. Всё очень просто.
Блокировки
Для защиты от вандалов мы принимает некоторые меры. Участники которые наносят вред проекту блокируются, в зависимости от степени нанесённого вреда время блокировки разное. Для борьбы с вандалами установлены некоторые ограничения на некоторые действия, как например внесение правок или добавление новых объектов. Если вы редактируете Factopedia как гость и часто получаете сообщение попробовать то или иное действие позже, вы можете
зарегистрироваться что бы увеличить лимиты. Наши лимиты настроены так что бы обычные пользователи не испытывали от этого дискомфорт, если вы добросовестный участник и испытываете проблемы с лимитами, пожалуйста
свяжитесь с нами.
Что мы понимаем под определением "Объект"
Почти все объекты относятся к какой нибудь категории или как мы это называем "
родителям". Родители это такие же объекты которые, в свою очередь, могут иметь своих родителей. И так до тех пор пока у объекта не будет своего родителя. Этот процес мы называем наследием. Объекты которые не имеют родителя, мы называем
Первичными объектами или первичными категориями, от них произошли все остальные объекты. Если объект является родителем хотя бы для одного объекта и сам относится к другому родительскому объекту, то мы такой объект называем
категорией или
промежуточным объектом. Например, так может выглядеть родовое дерево обычной моркови:
Эукариоты / Растения / Цветковые / Двудольные / Зонтикоцветные / Зонтичные / Морковь
Не бойтесь неправильно определить родовое дерево объекта, совместными усилиями мы позже решаем где правильное место объекта в иерархии объектов.
Если объект не является родителем другого объекта, то это -
конечный объект, с которыми в основном и идёт работа на нашем ресурсе. Родительские объекты необходимы в основном для классификации конечных объектов. Первичные, промежуточные и конечные объекты, это всё объекты одного типа, но с разным местом в родовом дереве. Итак повторим:
- Первичный объект
не имеет родителя
- Промежуточный объект
имеет родителя и сам является родителем (имеет детей)
- Конечный объект
имеет родителя, но сам не является родителем (не имеет детей)
Атрибуты объекта
Каждый объект состоит из множества атрибутов, например атрибутом объекта "Морковь" может быть "Колорийность" или "Содержание жиров", у объекта "Транспорт" может быть атрибут "Средняя скорость".
Объект может наследовать атрибуты своих родителей либо может иметь в себе и новые атрибуты. Атрибуты могут быть как со значениями так и просто присутствовать, что бы остальные объекты, унаследовавшие данный объект, могли ими пользоваться. Мы собираем только объективные факты об объектах. Когда мы сравниваем объекты, мы сравниваем их атрибуты. Несколько слов о том как мы храним и обрабатываем некоторые атрибуты:
⚬ Динамическое значение
Внимание! Настройка этого атрибута требует специальных знаний.
Иногда значение атрибута меняется очень часто, иногда менее часто, тем не менее что бы постоянно не обновлять атрибуит, вы можете задать источник и правила парсинга и актуальное значение будет всегда в нашей базе данных. Когда вы выберите значение атрибута Динамическое значение вы увидите некий каркас JSON объекта который вам будет необходимо заполнить.
{
"url": "",
"regexp": "",
"format": "",
"update_every_h": 24
}
где:
- url
Адрес с которого необходимо спарсить значение
- regexp
Регулярное выражение которое будет использовано при парсинге значения со страницы
- format
Какое то дополнительное форматирование результатирующего значения. На данный момент это может быть только математическое выражение, где a, b, c и т.д. могут быть значения с регулярного выражения. Например если вы хотите первое значение, которое получилось в результате обработки регулярного выражения, умножить на 100, то надо написать в это поле: a*100
Так же есть возможность замены какого то символа в результате на другой, например: replace|,|. после чего все запятые будут заменены на точки.
Можно использовать несколько форматов один за другим таким образом: {"0":"replace|,|", "1":"a*100"} таким образом в первом найденном значении `a` будут удалены запятые, а потом это значение будет умножено на 100
- update_every_h
Как часто обновлять значение в часах
в значениях этих настроек все знаки
" или
\ должны быть дополнительно экранированы знаком
\ спереди, в значение "regexp" знак
/ должен быть экранирован двумя знаками
\\ спереди, кроме знака
/ который открывает и закрывает регулярное выражение, например:
{
"url": "https://factopedia.org",
"regexp": "/<\\/td>.*class=\"population\" data-count=\"([\\d]+).*\"/i",
"format": "a*1000",
"update_every_h": 24
}
Стоить так же заметить что наш парсер пока что не обрабатывает javascript.
⚬ Стоимость Стоимость необъективная величина в рамках страны не говоря уже о общемировых рамках. Поэтому стоимости объекта пока что нету в нашей базе данных
Наследование атрибутов
Объекты наследуют атрибуты своих родителей. Потому что как правило объекты одного родителя имеют схожие атрибуты. Добавляя атрибуты к каждому объекту вы наделяете этими атрибутыми все объекты которые произойдут от этого объекта. Указав правильно известные вам атрибуты объекта вы облегчите работу всем остальным кто будет создавать объекты от вашего родителя. Поэтому когда создаёте новые атрибуты убедитесь что они присвоены правильному объекту в иерархии.
Первичные и промежуточные объекты (категории) как правило имеют атрибуты с неопределёнными значениями. В конечном объекте как правило эти атрибуты определяются, то есть им присваиваются значения.
Ограничения
Значения атрибутов
- Числовой
от -2147483648 до 2147483647 и от -99999.999999999999999 до 99999.999999999999999
- Диапозон
от -2147483648 до 2147483647 и от -99999.999999999999999 до 99999.999999999999999
- Текстовый, Динамический
150 знаков
- Множество значений
кол-во элементов * 3 + символьная длинна всех значений должна быть меньше либо равна 999 символам
- Множество ссылок на другие объекты
кол-во элементов * 3 + символьная длинна всех ID значений объектов должна быть меньше либо равна 50 символам
Если вам не достаточно разрешённых значений, пожалуйста свяжитесь с нами.
Добавление нового объекта
Добавляя новый
объект убедитесь что до вас его ещё никто не добавил, для этого сделайте поиск воспользовавшись строкой поиска в верхней части сайта. Добавляя категорию (первичный либо промежуточный объект), убедитесь что он может иметь в себе более одного конечного объекта. Например автомобиль может иметь название равное поколению, а часть его родительского дерева может выглядеть так:
... / Марка / Модель / Серия / Поколение
- Родительские объекты (Категории)
Если вы не можете найти необходимую вам категорию, хорошим тоном является создание такой категории перед добавлением нужного объекта. Незабывайте что категория это такой же объект поэтому руководствуйтесь теми же правилами.
- Название
Укажите полное название конечного объекта, промежуточный объект желательно что бы содержал только конкретное название категории, например в случае с машиной категории могут быть "Машины", "BMW", "E36", "320i sedan", но последний объект желательно называть например "BMW E36 320i sedan, automatic". Название конечного объекта может быть только в единственном числе в именительном падеже. Категории могут быть названы в множественном числе, например "Машины", "Самолёты", "Страны".
- Описание
Используйте синтаксис Markdown для форматирования текста. Используйте следующие тэги для ссылок на другие объекты:
- {object}
Полный формат: {{object:Название или ID объекта:Текст ссылки}}
Название или ID объекта можно опустить если Текст ссылки такой же как название объекта, но в случае если поменяется название объекта ссылка перестанет работать. Поэтому мы рекомендуем ссылаться по ID объекта.
Пример: {{object:Москва:Город Москва}}, {{object:Москва}}, {{object:120:Город Москва}}
- Атрибуты
Укажите все известные вам атрибуты объекта, если вам известны значения этих атрибутов, укажите их выбрав единицу измерения, если она необходима.
Если вы создаёте объект который будет содержать только множество объектов (то есть по сути категорию), у которого могут быть только абстрактные атрибуты (атрибуты без значений, которые унаследуют её дети), то данный объект необходимо называть в множественном числе например: Самолёты, Ракеты, Транспорт, Овощи и т.д.
Сравнения объектов
Объекты можно сравнивать между собой. Сравнения помогают лучше понять разницу между объектами.
Ограничения
- Максимально 20 объектов в одном сравнении
- Максимально можно сортировать по 10 артибутам
- Объекты для сравнения должны иметь хоть бы больше половины общих Атрибутов
Название сравнения это не обязательное поле, если не указано название будет состоять из объектов которые используются в сравнении.
Сортировка объектов
Объекты могут быть отсортированы по указанным атрибутам, в определённой
последовательности и
направлении.
Последовательноcть указывает приоритет сортировки. Объекты будут отсотрированы по указанным атрибутам по указанной последовательности от меньшего к большему. То есть вначале объекты будут отсортированы по атрибуту с номером 1 в последовательности, потом 2 и т.д.
Направление может быть
- По возрастанию (↑)
от меньшего значения к большему
- По убыванию (↓)
от большего к меньшему
Особенности сравнения некоторых типов данных
Если со сравнением некоторых типов данных таких как текст или числа не возникает вопросов, то в остальном могут возникнуть вопросы и мы считаем необходимым пояснить как мы на сегодняшний день сравниваем некоторые типы данных.
- Диапазон. Две части диапазона соединяются в одно число и сравниваются со значением другого объекта. Hапример диапазон 20-30, при сравнении с другим объектом будет иметь значение 2030
- Логическое нет считается меньше чем логическое да
- Множество значений сортируется по порядку, все значения склеиваются в строку и сравниваются со значение другого объекта, например: "один, два, три" переводится в строку "дваодинтри" и сравнивается
- Объекты сравниваются по своим именам
- Множество объектов сравниваются похожим образом как и множество значений, то есть они сортируются по имени и потом имена всех объектов склеивается в одну строку, полученые строки сравниваются между собой, то есть если имена объектов "один, два, три", то при сравнении данный атрибут будет иметь значение "дваодинтри"