2011-08-30 16 views
10

I asked this question on meta, pero ahora me doy cuenta de que puede ser más apropiado para el sitio principal ya que es una pregunta general relacionada con cualquier sistema basado en etiquetado (me complace cerrar/eliminar uno dependiendo de dónde piensen ir)¿Cuál es el modelo de datos utilizado para las etiquetas y los sinónimos de las etiquetas?


tengo un sistema similar de los datos etiquetados y estoy funcionando con el mismo problema como lo hizo SOF donde tengo un montón de etiquetas que son realmente la misma cosa. Intento crear una página de sinónimos de etiqueta similar a SOF para admitir la organización de esta información.

Algunas preguntas en torno a las relaciones y "modelo de datos" de sinónimos etiqueta:

supongo que una etiqueta maestra puede tener múltiples etiquetas de sinónimos sino un sinónimo de etiqueta sólo puede ser sinónimo para una variable de maestro. ¿Es eso correcto?

Además, ¿una etiqueta maestra también puede ser una etiqueta de sinónimo? Por ejemplo, digamos que usted tiene una etiqueta llamada javascript y que tenía:

Maestro: js
sinónimos: javascript, js-web

puede también tener:

Maestro: javascript
sinónimos: js

Por lo tanto, en el ejemplo anterior, seguiría resolviendo resolver finalmente js-web a javascript porque la etiqueta maestra: js es en sí misma una etiqueta de sinónimo.

también, que me hace pensar que también podría funcionar en una referencia circular donde se tiene una Maestría

: js
sinónimos: java-script

y

Maestro: javascript
Sinónimos: js

¿Cómo trata el sistema las referencias circulares?

+0

Schemaless Los DB NoSQL son flexibles con estos problemas del modelo de datos. Echa un vistazo a mongodb.org – InspiredJW

+0

, 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 ... –

Respuesta

15

¡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!).

Cuestiones relacionadas