Обсуждение:Программирование Викиданных/Города
Добавить темуТемпоральные странности
[править]- "Город" и "Большой город"
- Количество экземпляров объекта "Город" уменьшилось с 20800 до 9258 записей
- Количество экземпляров объекта "Большой город" увеличилось со 198 до 3073 записей
- Города-побратимы
- Количество городов без городов-побратимов уменьшилось с 17823 до 7266 записей
- Количество городов, имеющих города-побратимы, во всем мире уменьшилось с 2973 до 1992 записей
- Количество городов, имеющих города-побратимы, во России уменьшилось с 207 до 6 записей
- Спасибо, Екатерина! Не забывайте подписывать свои сообщения на странице обсуждения, см. w:ВП:Подпись. --Andrew Krizhanovsky (обсуждение) 07:22, 25 сентября 2020 (UTC)
- @AKA MBG, еще не закончила редактировать этот раздел, думала насчет гипотез. --Menshiko (обсуждение) 09:09, 25 сентября 2020 (UTC)
- Гипотезы
- Если объекты связаны с численностью проживающего в них населения, то одной из гипотез может быть миграция населения. При этом общее число экземпляров объектов "Город" и "Большой город" не должно было измениться значительно, однако наблюдается его резкое уменьшение. В процессе работы с экземплярами объекта "Большой город" был обнаружен новый объект city/town. По данным ProWD существует 1248 экземпляров этого объекта, при этом 1111 из них - города, расположенные в России.
- Уменьшение числа городов, как имеющих, так и не имеющих города-побратимы, вероятно, вызвано уменьшением количества экземпляров объекта "Город", для которого решалась задача. Если в запросах заменить объект "Город" на city/town, то, например, количество записей в упорядоченном списке городов по числу городов-побратимов в России изменится с 6 до 270 (2020). В 2017 году количество городов России, имеющих города-побратимы, приравнивалось к 207.
SELECT ?cityLabel (COUNT(?item) AS ?count) WHERE { # Counting sister cities ...
?city wdt:P31 wd:Q7930989. # ... of cities ...
?city wdt:P17 wd:Q159. # ... belonging to Russia ...
?city wdt:P190 ?item. # ... with filled property "sister city"
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
GROUP BY ?city ?cityLabel # Grouping by city
ORDER BY DESC(?count) # Sorting by number of sister cities (descending)
SPARQL-запрос, 270 записей (2020). --Menshiko (обсуждение) 10:52, 25 сентября 2020 (UTC)
- @Екатерина, спасибо за интересное рассуждение. Думаю, что мы его включим в итоговый текст. А сейчас вот:
- Перед разделом "1.1 «Город»" добавьте раздел "Малый город, town (Q3957)".
- После раздела "1.2 «Большой город»" добавьте раздел "1.4 "Города-миллионеры (Q1637706)".
- В эти два новых подраздела добавьте, пожалуйста, по аналогичному скрипту с подсчётом числа объектов.
- Раздел "1.3 «Город» и «Большой город»" теперь будет называться: "Разные типы городов". В скрипт этого раздела добавьте два новых типа исследуемых городов.
- Все эти изменения отразите также в английской версии статьи. (Это не срочное задание). --Andrew Krizhanovsky (обсуждение) 07:41, 29 сентября 2020 (UTC)
- @Andrew Krizhanovsky, внесла изменения в раздел "Экземпляры" в русскоязычной и английской версиях. --Menshiko (обсуждение) 09:31, 29 сентября 2020 (UTC)
- Круто, спасибо, @Екатерина. Посмотрите в статье Программирование Викиданных/Языки программирования скрипт в разделе "Демонстрация работы с операциями над множествами в SPARQL". В этом скрипте есть комментарии (лучше на английском) ко всем нетривиальным строкам кода. Прошу к одному скрипту в разделе "Разные типы городов" Вашей статьи также добавить комментарии. И в Английском Викиверситете тоже. --Andrew Krizhanovsky (обсуждение) 10:02, 29 сентября 2020 (UTC)
- @Andrew Krizhanovsky, комментарий к скрипту добавлен. --Menshiko (обсуждение) 11:26, 29 сентября 2020 (UTC)
Сколько людей
[править]Ещё одна задача, которую хотелось бы решить - это подсчитать, сколько всего живёт людей суммарно (1) по всем малым городам, (2) по всем просто городам, (3) по всем большим городам и (4) по всем миллионерам. Сравнить это число с численностью населения Земли и тогда сказать, каков процент живёт в городах, каков процент живёт в каждом из четырёх типов этих городов. --Andrew Krizhanovsky (обсуждение) 08:11, 29 сентября 2020 (UTC)
@Andrew Krizhanovsky, добавила соответствующий раздел и первые версии скриптов по нахождению суммарной численности населения для разных типов городов. Заметила следующие трудности/несоответствия:
- В качестве разделителя используется точка, например, Sidi Bennour. Как следствие, появляется дробная часть.
- Явно устаревшие значения, например, Ciudad Juárez имеет население в 1391 человек и в то же время является "городом-миллионером".
- Принадлежность экземпляра к разным типам городов одновременно.
- Проблема текущей версии скрипта: если у экземпляра несколько значений свойства "population", то в сумме учитываются все, а не последнее. --Menshiko (обсуждение) 18:09, 29 сентября 2020 (UTC)
- @Екатерина, по поводу разного числа населения. Посмотрите, пожалуйста, скрипт в разделе d:Wikidata:SPARQL_query_service/queries/examples#Average_lifespan_by_occupation. Там используется функция усреднения avg в коде (avg(year(?birth)), если у человека несколько дат рождения. Используйте функцию MAX. О, кстати, эта функция там же используется и для населения в разделе "Largest cities per country". --Andrew Krizhanovsky (обсуждение) 10:01, 1 октября 2020 (UTC)
- @Andrew Krizhanovsky, доработала скрипты, добавив функции MAX для случаев нескольких значений свойства "population" и REPLACE для удаления точек как разделителя. Сделала сводную таблицу в разделе "Анализ", правильно ли я поняла, что требовалось в итоге по задаче? --Menshiko (обсуждение) 16:30, 3 октября 2020 (UTC)
Иллюстрации
[править]Диаграмма по количеству городов-побратимов у страны
[править]#defaultView:BubbleChart
SELECT ?countryLabel (COUNT(?item) as ?count) WHERE { # Selecting number of distinct sister cities of particular country cities which are ...
SELECT DISTINCT ?countryLabel ?item WHERE { #
?city wdt:P31 wd:Q515. # ... instances of "city" ...
?city wdt:P17 ?country. # ... with filled property "country" ...
?city wdt:P190 ?item. # ... with filled property "sister city"
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
}
GROUP BY ?countryLabel
ORDER BY DESC(?count)
SPARQL-запрос, 189 записей (2020).
@Andrew Krizhanovsky, подойдет ли такая диаграмма в качестве одной из новых иллюстраций к статье? --Menshiko (обсуждение) 20:46, 29 сентября 2020 (UTC)
- @Екатерина, очень хорошая иллюстрация. В качестве пояснения текстом после диаграммы, можно, например, сказать, что Польша имеет больше всего побратимов, указать сколько. Перечислить страны, имеющие с Польшей больше всего городов-побратимов и скрипт, который позволяет вычислить и упорядочить страны, имеющие больше всего побратимов с городами Польши. Если это возможно. --Andrew Krizhanovsky (обсуждение) 10:46, 1 октября 2020 (UTC)
- @Andrew Krizhanovsky, добавила раздел "У какой страны больше всего побратимов?". Надо ли добавить еще какие-то пояснения к диаграмме/таблице/разделу в целом? --Menshiko (обсуждение) 19:30, 4 октября 2020 (UTC)
Граф братских городов
[править]#defaultView:Graph
SELECT ?city ?cityLabel ?item ?itemLabel WHERE { # Selecting which are ...
?city wdt:P31 wd:Q515. # ... instances of "city" ...
?city wdt:P190 ?item. # ... with filled property "sister city" which is ...
?item wdt:P17 wd:Q159 # ... belonging to Russia
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
SPARQL-запрос, 359 записей (2020).
На занятии также обговаривался граф братских городов в качестве второй из новый иллюстраций к статье. Граф для мира очень большой (> 10 тысяч связей), поэтому ограничилась братскими городами России. Если углубляться в скрипт, то, на самом деле, он находит не города-побратимы России, а города, для которых города России являются побратимами. Хотя отношение и двустороннее, в первом случае граф будет очень маленьким из-за практически отсутствия городов России, относящихся к объекту city (описано в "Темпоральные странности"). @Andrew Krizhanovsky, надо ли внести изменения в скрипт или выбрать другую страну для рассмотрения? --Menshiko (обсуждение) 17:12, 3 октября 2020 (UTC)
- @Катерина, в скриптах, которые находятся в разделе "Города-побратимы", хотелось бы, чтобы поиск шёл по всем четырём типам городов, которые Вы перечислили в табличке выше. Тогда вместо строчки:
?city wdt:P31 wd:Q515.
- у вас будет:
{ ?city wdt:P31 wd:Q3957 } UNION # of instances of "town" ... { ?city wdt:P31 wd:Q515 } UNION # OR instances of "city" ... { ?city wdt:P31 wd:Q1549591 } UNION # OR instances of "big city" ... { ?city wdt:P31 wd:Q1637706 }. # OR instances of "city with millions of inhabitants"
- Получается такой скрипт: Число городов с определённым числом побратимов (Россия) (предлагаю использовать немного другие переменные, например, ?sister (город-побратим) вместо безликого ?item).
- И объясните несовпадение результатов, когда мы ищем
?city wdt:P17 wd:Q159. (?city принадлежит России) и наоборот ?sister wdt:P17 wd:Q159. (город-побратим принадлежит России). --Andrew Krizhanovsky (обсуждение) 19:56, 4 октября 2020 (UTC)
- @Andrew Krizhanovsky, правильно ли я поняла, что нужно сделать:
- Абсолютно во всех скриптах раздела "Города-побратимы" заменить указанную строку на UNION
- Как следствие, оставить количество результатов запроса и графики только за 2020 год
- ?item -> ?sister
- Изменить графики (2020) и таблицы по новым данным
- @Andrew Krizhanovsky, правильно ли я поняла, что нужно сделать:
- Результаты запросов различны, поскольку мы не накладываем ограничений/условий на тип города города-побратима. Как было описано в "Темпоральные странности", появился новый объект "city/town". Во втором случае учитывается указанный ранее (как и любой другой) тип города России, в первом мы явно указываем, что нас интересуют только 4 ("town", "city", ...). Надеюсь, я смогла донести свою идею. --Menshiko (обсуждение) 20:45, 4 октября 2020 (UTC)ё
- @Andrew Krizhanovsky, внесла правки в русскоязычную версию. Посмотрите, пожалуйста. --Menshiko (обсуждение) 17:30, 5 октября 2020 (UTC)
- @Катя, прекрасная работа! Добавил строчку про проценты городов без побратимов. Напишите то же в английской версии, пожалуйста. И в первой строчке статьи можно указать ещё два типа рассматриваемых городов.
- Исправил где-то код языка с английского на русский. Если ещё где-то на своей странице в Русском Викиверситете увидите, что выводится текст на английском, то исправьте, пожалуйста, на русский.
- После строчки "SPARQL-запрос, 82 записи (2020)" в разделе "3.2.2 Россия" напишите пару строк с анализом, что-то типа: "С культурной столицей России желающих дружить нашлось больше (230 побратимов), чем с официальной столицей (134 побратима) на 2020 год. Почти одинаковое число 54-58 побратимов делят Омск, Волгоград и Калининград. У Петрозаводска, Перми и Владимира по 14 побратимов."
- Предлагаю убрать фразу "На 2020 год больше всего городов-побратимов было у Санкт-Петербурга, их у него 230" из двух разделов 3.3.1 и 3.3.2, поскольку это уже будет сказано выше, но зато подумать и добавить текст с пояснением, что мы видим довольно интересную кривую. А именно, "по зелёной кривой видим, что если брать число побратимов X, при этом X < 38, то городов с X побратимами будет меньше десятка. Если потребовать, чтобы у городов было X побратимов, X < 13, то таких городов с X побратимами будет уже около сотни."
- Ещё по этому зелёному графику. Можете по вертикали отложить логарифм? Тогда график будет называться "Логарифмическая ависимость числа городов..." и будет лучше видно значение N по шкале при малых значениях.
- Добавьте, пожалуйста, скрипт и картинку о ближайших соседях России (по аналогии с Германией, но ещё одну таблицу не надо). И перечислите после картинки, что больше 20 городов-побратимов у России с такими странами, как США (47 городов-побратимов), Китай (46), Германия (45), Украина (28), Болгария (26), Польша (24), Франция (23), Италия (22). --Andrew Krizhanovsky (обсуждение) 09:43, 6 октября 2020 (UTC)
- @Andrew Krizhanovsky, внесла правки в русскоязычную версию. Посмотрите, пожалуйста. --Menshiko (обсуждение) 17:30, 5 октября 2020 (UTC)
- @Andrew Krizhanovsky, внесла правки. --Menshiko (обсуждение) 12:31, 8 октября 2020 (UTC)
@Катерина, замечательно, что оставили старый зелёный график и добавили новый светло-зелёный логарифмический. Поведение кривой на новом графике стало намного нагляднее, но ось Y малоинформативна. Можете ли сделать одно из двух или оба сразу по новому графику:
- Указать значения на оси Y от нуля до 1400, сохранив при этом логарифмический характер кривой?
- Включить label (числовые значения) у зелёных треугольничков на кривой?
Формулу с игреком и R^2 хорошо бы отодвинуть от края, сейчас формула прилипла к оси Y. Хорошо бы увеличить размер всех шрифтов: подписи у осей, числа, формула с игреком. --Andrew Krizhanovsky (обсуждение) 19:05, 8 октября 2020 (UTC)
- @Andrew Krizhanovsky, увеличила шрифт на всех графиках и количество делений на графике логарифма, добавила значения к треугольничкам. Сместить параметры функции не получается, это встроенная функция построения тренда. --Menshiko (обсуждение) 11:48, 9 октября 2020 (UTC)
- Загрузила еще одну версию с нелогарифмической шкалой и соответствующими значениями у треугольничков, но количество делений не увеличивается. @Andrew Krizhanovsky, оставьте или верните, пожалуйста, ту версию, которая больше подходит. --Menshiko (обсуждение) 12:04, 9 октября 2020 (UTC)
- @Катя, оставляем последний вариант. Спасибо! --Andrew Krizhanovsky (обсуждение) 14:03, 9 октября 2020 (UTC)
Город=?
[править]В общем, почти во всех запросах, вместо того, чтобы объединять несколько типов городов через UNION, лучше использовать конструкцию "?city wdt:P31/wdt:P279* wd:Q7930989". А для городов России и "ближнего зарубежья" этот класс (город) - основной и единственный, который используется. Отсюда и "проблемы" с российскими городами, описанные выше. Infovarius (обсуждение) 10:10, 23 октября 2020 (UTC)
- @Катя, проверьте, пожалуйста. Если применить конструкцию, предложенную Infovarius, существенно ли уточнятся / улучшатся результаты? Если да, то используйте именно эту конструкцию в скриптах.
- @Антон, спасибо большое за подсказку! --Andrew Krizhanovsky (обсуждение) 06:03, 24 октября 2020 (UTC)
- @Екатерина, ещё просьба. Если и когда будете применить конструкцию, предложенную Infovarius, то выберите один из скриптов с UNION. В этом одном скрипте оставьте UNION, а рядом напишите, пожалуйста, тот же скрипт, но с подмножествами, предложенными участником Infovarius. И добавьте абзац текста с пояснением, в чём разница этих двух скриптов. Это поможет читателям понять, когда какой скрипт лучше применять. (Вопрос про SVG помню, разбираюсь.) --Andrew Krizhanovsky (обсуждение) 16:29, 25 октября 2020 (UTC)
- @Andrew Krizhanovsky, не согласна с необходимостью использования другой конструкции по ряду причин:
- Во-первых, замена конструкции с UNION неэквивалентна предложенной. Так, выполнив новый SPARQL-запрос (без LIMIT запрос не удалось выполнить по временным ограничениям), я обнаружила в выборке экземпляры объектов, которые исследуемыми не являются. Например, Sparta (Sparta is an instance of ancient city, ancient city is a subclass of lost city, lost city is a subclass of city, city is a subclass of city/town).
- Во-вторых, использование объекта city/town более чем в половине запросов, при условии, что он не является исследуемым, может вызвать у читателей статьи и других исследователей вопросы. На мой взгляд данный объект является скорее "исключением", поскольку распространяется, как было сказано, только на города России и ближнего зарубежья (что в описании объекта не сказано: "тип населённого пункта (вместе city + town)").
- В-третьих, объект был обнаружен в ходе исследования, поэтому, я считаю, что следует уделить ему внимание в заключительной части.
Конечно, текущий вариант запроса имеет недостатки. Например, дублирование городов в нескольких рассматриваемых категориях в связи с присвоением им "статусов" разных типов городов одновременно. Однако это связано по большей части с качеством самих Викиданных, а не с корректностью запроса. --Menshiko (обсуждение) 10:52, 30 октября 2020 (UTC)
- @Катерина, спасибо за активную жизненную позицию :) Предложение будет такое. В Вашей статье есть раздел «Полнота Викиданных». Предлагаю переименовать его в следующий: «Полнота и недостатки Викиданных». В этом разделе сейчас оптимистично указана возможность использования конструкции с подклассами "?X wdt:P31/wdt:P279* ?Y". Прошу Вас добавить в этот раздел следующие ложки дёгтя:
- информацию о неэквивалентности подклассов и конструкции UNION + пример.
- Особенность для городов России.
- Недостатки конструкции UNION. (То есть это всё те же замечания, которые Вы перечислили выше). --Andrew Krizhanovsky (обсуждение) 20:33, 30 октября 2020 (UTC)
- В этом случае моё предыдущее предложение — переделывать все скрипты — отменяется. --Andrew Krizhanovsky (обсуждение) 20:34, 30 октября 2020 (UTC)
- @Andrew Krizhanovsky, обновила содержание раздела "Полнота и недостатки Викиданных" и ссылки. --Menshiko (обсуждение) 12:09, 4 ноября 2020 (UTC)
- Шаблон:Ping насчёт дублирования - это нормально, надо добавить "DISTINCT" после "SELECT" и оно исключится. Infovarius (обсуждение) 07:51, 6 ноября 2020 (UTC)
wd_book
[править]@Andrew Krizhanovsky, хотела бы уточнить несколько вопросов по оформлению и содержанию главы в книге:
- Необходимо ли вставлять перед каждым листингом блок "Используется" с описанием объектов и свойств, как в статье на Викиверситете? Если да, то можно вынести его на поля? (занимает много места)
Да, думаю, что поля — это оптимальное размещение для такой второстепенной информации. Сейчас попробую, как делать сноски на поля из листинга...--Andrew Krizhanovsky (обсуждение) 16:23, 2 ноября 2020 (UTC)- @Катя, пожалуй, при наличии комментариев в исходном коде такие блоки "Используются" излишни. Не нужны они. Andrew Krizhanovsky (обсуждение) 19:10, 2 ноября 2020 (UTC)
- Каким образом зафиксировать результаты запроса (количество записей) и надо ли это указывать?
- Мне кажется, что это может быть интересно читателю. Как указать, я написал в Листинги программ. --Andrew Krizhanovsky (обсуждение) 11:12, 3 ноября 2020 (UTC)
- Необходим ли раздел "Будущая работа" в тексте главы?
- Упражнения можно вставлять в любом месте главы на полях?
- В ответах к упражнениям дополнительно к тексту можно вставлять листинги SPARQL-запросов?
- @Катя, на предыдущие три вопроса постарался ответить в разделе Будущая работа, упражнения и задачи. Если остались неясности, пишите, пожалуйста. --Andrew Krizhanovsky (обсуждение) 16:13, 4 ноября 2020 (UTC)
- Можно ли переформулировать исключительно для главы упражнение №2 с флагами? Например, какому из перечисленных ниже городов принадлежит флаг, изображенный на рис.?
- Можно ли не вставлять в главу предложения "Наиболее полно описанными городами на Викиданных являются ..." и "Почти пустыми и малоинформативными городами оказались ...", а оставить только информацию ProWD? Где-то информация неактуальна, например, Петрозаводск уже не является экземпляром объекта "Город". --Menshiko (обсуждение) 19:13, 1 ноября 2020 (UTC)
- Еще есть небольшая проблема с упражнением №3: у Москвы дата основания некорректно считывается при запросе, как результат не отображается в ответе. Не могли Вы, пожалуйста, посмотреть, можно ли с этим что-то сделать. --Menshiko (обсуждение) 09:57, 2 ноября 2020 (UTC)
- Екатерина, спасибо большое за вопросы. Постараюсь на них ответить. --Andrew Krizhanovsky (обсуждение) 16:21, 2 ноября 2020 (UTC)
- @Andrew Krizhanovsky, заранее спасибо за ответы! Появились еще два небольших вопроса:
- С некоторыми запросами почему-то укорачивание ссылки не работает. Пробовала WikiQuery и bit.ly. Например, SPARQL-запрос. Чем это может быть вызвано?
- В список литературы нужно включать все ссылки кроме как на Викиданные/Википедию/Вики...? --Menshiko (обсуждение) 12:55, 4 ноября 2020 (UTC)
- Вот ссылка: https://w.wiki/k6B Я убрал многоточия и лишние пробелы. Мне кажется, так листинг компактнее и удобнее его читать. И ссылка заработала. А я не верил в искусственный интеллект :) Ссылка как оценка красоты кода: ссылка работает - код покрасивше.
- @Катя, думаю, да: включаем в литературу всё, кроме вики-ссылок. Вики-ссылки и прочие гиперссылки ставим также прямо в тексте с помощью команды \href. --Andrew Krizhanovsky (обсуждение) 14:55, 4 ноября 2020 (UTC)
- @Катя, в русском тексте привычнее видеть «Шанхай», а не Shanghai. --Andrew Krizhanovsky (обсуждение) 16:08, 4 ноября 2020 (UTC)
- @Andrew Krizhanovsky, с короткими ссылками разобралась, спасибо! Есть ли еще какие-то недочеты в "Полнота и недостатки Викиданных" или можно размещать в английской версии перевод? --Menshiko (обсуждение) 17:34, 4 ноября 2020 (UTC)
- @Катя, мелочи поправил. По поводу "SPARQL-запрос по нахождению городов разных типов". Я утоптал комментарии, получилось: https://w.wiki/k7u Аналогично в листингах, если комментарии написать компактнее, то они будут влезать на одну строку с кодом, сейчас не влезают. Да, и можно переводить. --Andrew Krizhanovsky (обсуждение) 18:54, 4 ноября 2020 (UTC)
Викиданные и рисунок
[править]@Andrew Krizhanovsky, добавила вопрос на странице обсуждения Москвы. Хотела бы уточнить насчет иллюстрации для заглавия английской версии, подходят изображения только с лицензией Free Art License? Я бы хотела использовать часть изображения, но у него лицензия другая (Creative Commons Attribution, CC BY 2.5) и надо указать автора, лицензию и примененные изменения. Все кроме последнего вроде есть в шаблоне подписи. --Menshiko (обсуждение) 20:08, 10 ноября 2020 (UTC)
- @Катерина, спасибо за вопрос на Викиданных. Я тоже там задал вопрос специалисту.
- Лицензия Creative Commons Attribution годится. Именно под этой лицензией будет наш учебник. Эта лицензия разрешает менять изображение (вырезать, например).
- Не уверен, что в описании иллюстрации нужно писать о том, что именно Вы изменяли. Таких изменений могут быть сотни для одной иллюстрации... --Andrew Krizhanovsky (обсуждение) 21:13, 11 ноября 2020 (UTC)