Соблазнительно дать вам более теоретический ответ на мета, касающийся фолксономий, многозначности и тому подобного!Поскольку я отвечаю на стороне StackOverflow, я постараюсь дать немного более технический ответ.Выполнение запросов с помощью StackOverflow Data Explorer позволит мне попытаться ответить на ваши вопросы (я не связан со StackOverflow, поэтому точно не знаю).
В StackOverflow отношение мастер / синоним тега тщательно убирается и культивируется.На момент записи из Проводника Данных:
- Теги имеют 29488 строк
- TagSynonyms имеет 1916 строк
Интересно сравнить это с другимиfolksonomies, в одной статье " Теги Technorati: хорошая идея, ужасная реализация " говорится.
"Technorati объявляет, что теперь они отслеживают 466 951 различных тегов, что чертовски впечатляет, когдавы считаете, что в типичном словаре содержится около 75 000 записей "
Небольшое предупреждение: я обычно пишу Oracle SQL и предполагаю, что Data Explorer использует SQLServer, поэтому мои запросы могут быть немного любительскими.Во-первых, мои предположения о данных:
- все, что перечислено в таблице тегов, является "главным тегом".
- в таблице TagSynonyms, TargetTagName является "главным тегом", SourceTagName является«тег синонима».
Теперь к вашим конкретным запросам:
«Я предполагаю, что главный тег может иметь несколько тегов синонимов, но тег синонимов может быть толькосиноним для одного основного тега. Это правильно? "
select * from TagSynonyms where TargetTagName = 'javascript'
Результат: Да.Главный тег может иметь несколько тегов синонимов.
select SourceTagName, count(*) from TagSynonyms group by SourceTagName having count(*) > 1
Результат: Да.Тег синонима может быть синонимом только для одного основного тега.
"Кроме того, может ли главный тег также быть тегом синонима?"
select TagName from Tags
intersect
select SourceTagName from TagSynonyms
Результат: Да.Главный тег также может быть тегом синонима.Когда я выполнял этот запрос, было 465 тегов, которые были и синонимом, и мастером
«Как система работает с циклическими ссылками?»
Вот где моя логика /SQL может подвести меня.Вопрос в том, могу ли я найти какие-либо циркулярные ссылки?Чтобы сделать это, я думаю, мне нужно потренироваться:
- Установить a - набор тегов, которые являются одновременно основными и синонимами
- Установить b - синонимы для синонимов тегов в набореa
- Set c - пересечение b
Все в множестве c будет круговой ссылкой.
Мы уже вычислили набор a выше (в нем 465 строк).
Set b - синонимы для синонимов множества a
select SourceTagName from TagSynonyms where TargetTagName in (
select SourceTagName from TagSynonyms where TargetTagName in (
select TagName from Tags
intersect
select SourceTagName from TagSynonyms
))
Результат: 0 строк
Мы можем остановиться здесь, естьнет смысла работать с множеством c, поскольку мы уже знаем, что множество b пусто.
Если я не ошибаюсь в своей логике или SQL (что очень возможно), кажется, что в StackOverflow нет циклических ссылок.Я полагаю, что существуют технические процессы для предотвращения циклических ссылок (в противном случае StackOverflow может пострадать от StackOverflow!).