¡Es tentador darles una respuesta más teórica sobre metasonomía, polisemia y demás! Como respondo en el lado de StackOverflow, intentaré dar una respuesta marginalmente más técnica. Ejecutar consultas usando StackOverflow Data Explorer me permitirá intentar responder sus preguntas (no estoy afiliado a StackOverflow, así que no puedo estar seguro).
En StackOverflow, la relación de la etiqueta principal/sinónimo es cuidadosamente stewarded y cultivada.En el momento de escribir desde el Explorador de datos:
- Etiquetas tiene 29488 filas
- TagSynonyms tiene 1916 filas
Es interesante comparar esto con otros folksonomies, un artículo "Technorati tags: Good idea, terrible implementation" estados.
"Technorati anuncia que están ahora 466,951 seguimiento de etiquetas diferentes, lo cual es bastante maldito impresionante si tenemos en cuenta que un diccionario típico tiene alrededor de 75.000 entradas"
una advertencia rápida, por lo general escribo Oracle SQL y Supongo que Data Explorer está usando SQLServer, por lo que mis consultas pueden ser un poco de aficionados. En primer lugar, mis presunciones sobre los datos:
- todo lo que figura en la tabla de etiquetas es una "etiqueta maestra".
- en la tabla TagSynonyms, TargetTagName es una "etiqueta maestra", SourceTagName es la "etiqueta de sinónimo".
Ahora a sus consultas específicas:
"Asumo que una etiqueta maestra puede tener múltiples etiquetas de sinónimos sino un sinónimo de etiqueta sólo puede ser sinónimo de etiqueta de un maestro ¿Es eso correcto?"
select * from TagSynonyms where TargetTagName = 'javascript'
Resultado: Sí. Una etiqueta maestra puede tener múltiples etiquetas de sinónimos.
select SourceTagName, count(*) from TagSynonyms group by SourceTagName having count(*) > 1
Resultado: Sí. Una etiqueta de sinónimo solo puede ser un sinónimo de una etiqueta maestra.
"Además, ¿una etiqueta maestra también puede ser una etiqueta de sinónimo?"
select TagName from Tags
intersect
select SourceTagName from TagSynonyms
Resultado: Sí. Una etiqueta maestra también puede ser una etiqueta de sinónimo. Cuando ejecuté esta consulta, había 465 etiquetas que eran sinónimos y maestras
"¿Cómo trata el sistema las referencias circulares?"
Aquí es donde mi lógica/SQL puede decepcionarme. La pregunta es ¿puedo encontrar alguna referencia circular? Para ello creo que es necesario trabajar a cabo:
- Establecer un - conjunto de etiquetas que son a la vez maestro de sinónimos
- la serie B - sinónimos de los sinónimos de las etiquetas en establecer un
- ajustar c - una intersección b
Cualquier cosa en el conjunto c sería una referencia circular.
Ya hemos calculado el conjunto anterior (tiene 465 filas).
la serie B - sinónimos de los sinónimos de establecer un resultado
select SourceTagName from TagSynonyms where TargetTagName in (
select SourceTagName from TagSynonyms where TargetTagName in (
select TagName from Tags
intersect
select SourceTagName from TagSynonyms
))
: 0 filas
Podemos parar aquí, no hay punto de hacer ejercicio conjunto C como ya sabemos de la serie B esta vacio.
A menos que obtuve mi lógica o SQL incorrecto (lo cual es muy posible), parece que no hay referencias circulares en StackOverflow. Me imagino que existen procesos técnicos para evitar que las referencias circulares sucedan (de lo contrario, ¡StackOverflow podría sufrir StackOverflow!).
Schemaless Los DB NoSQL son flexibles con estos problemas del modelo de datos. Echa un vistazo a mongodb.org – InspiredJW
, los bucles y las cadenas son un tanto complicados ... lo más simple es rechazar por completo los bucles y las cadenas desde el principio ... –