es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dado un `RDF::Term` de la librería `RDF::Vocab`, ¿cómo puedo inferir el(los) tipo(s) de datos XSD que debo esperar?

Estoy utilizando scripts de Ruby para pasar una definición de vocabulario SKOS en formato Turtle a una hoja de cálculo (a través de CSV) y luego volver a convertirla en formato Turtle, permitiendo que personas no técnicas verifiquen y actualicen las frases localizadas. Luego, esto debe ser convertido nuevamente al formato Turtle con la menor cantidad posible de cambios no significativos y variaciones respecto al original.

La hoja de cálculo tiene las siguientes columnas (para este ejemplo):

  • ID del vocabulario
  • ID del término
  • ID de la propiedad
  • valor
  • EN
  • FR

El campo “ID del vocabulario” contiene un URI abreviado para el vocabulario, por ejemplo, “foo:bar”.

El campo “ID de la propiedad” contiene URIs abreviados que identifican una propiedad del vocabulario en sí mismo o de un término en él (como “dcterm:created” o “dc:title” para el primer caso; o “skos:prefName” o “skos:altLabel” para el segundo). Un caso especial del primer caso es “base_uri”, que define el URI base del vocabulario.

El campo “ID del término” contiene IDs que identifican un término en el vocabulario cuando corresponda, o está en blanco para propiedades del propio vocabulario.

El campo “valor” es una cadena literal no localizada, u otro tipo de literal (como una fecha) o un URI, según corresponda. Puede estar en blanco si el valor es una cadena localizada: en ese caso, las demás columnas contienen las versiones traducidas de la propiedad en varios idiomas. El nombre de la columna es el identificador de dos letras del idioma.

La creación del archivo CSV no es el problema: lo que es un poco complicado es leer nuevamente los valores literales y recrear los valores literales correctos.

Aquí está la cuestión: me gustaría poder inferir el tipo de dato XSD de la propiedad a partir del RDF::Term correspondiente. Puedo buscar este último a partir del URI abreviado, utilizando RDF::Vocab. Sin embargo, no parece haber un mapeo que pueda encontrar en estas bibliotecas hacia el tipo de dato XSD (ya sea obligatorio o sugerido).

Esto parece significar que debo crear un mapeo de los IDs de propiedad al tipo de dato XSD yo mismo si quiero evitar que todos los valores se conviertan en literales de cadena de forma predeterminada (lo cual no preservaría los tipos de dato originales).

¿Alguien puede aconsejarme si estoy en lo correcto aquí, o si hay alguna manera de inferir el tipo de dato XSD nominal a utilizar utilizando las bibliotecas de Ruby RDF?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Inferencia del tipo de dato XSD a partir de las bibliotecas RDF de Ruby

    Como experto en TI especializado en Ruby, XSD y RDF, tienes la tarea de convertir una definición de vocabulario SKOS en formato Turtle a una hoja de cálculo (a través de CSV) y luego de regreso, para permitir que personas no técnicas verifiquen y actualicen las frases localizadas. Luego, esto debe convertirse nuevamente al formato Turtle con la menor cantidad posible de cambios irrelevantes y variaciones en comparación con el original. Si bien crear el archivo CSV no es problema, lo que resulta un poco complicado es leer los valores literales y recrear los valores literales correctos. Te gustaría poder inferir el tipo de dato XSD de la propiedad a partir del Término RDF correspondiente. Puedes buscar este último utilizando RDF Vocab a partir de la URI abreviada. Sin embargo, parece que estas bibliotecas no tienen un mapeo al tipo de dato XSD, ya sea obligatorio o simplemente sugerido.

    Esto significa que es posible que debas crear tú mismo un mapeo de los IDs de propiedad al tipo de dato XSD si deseas evitar que todos los valores se conviertan en literales de cadena de forma predeterminada, lo cual no preservaría los tipos de dato originales. Por lo tanto, necesitas consejo sobre si estás en lo correcto o si existe alguna forma de inferir el tipo de dato XSD nominal a utilizar utilizando las bibliotecas RDF de Ruby.

    Desafortunadamente, parece que no hay una manera sencilla de inferir el tipo de dato XSD a utilizar a partir de las bibliotecas RDF de Ruby, especialmente para asegurarse de que se utilice el tipo de dato correcto al recrear los valores literales. Por lo tanto, es posible que tengas que crear tu propio mapeo de los IDs de propiedad al tipo de dato XSD, lo cual puede ser tedioso.

    Sin embargo, aún puedes utilizar RDF Vocab para acceder a los IDs de propiedad y al Término RDF de cada recurso RDF. Luego, puedes analizar el rango de cada propiedad e inferir el tipo de dato XSD apropiado, lo cual puede no ser infalible pero debería funcionar en la mayoría de los casos. Como alternativa, puedes usar una biblioteca de terceros que proporcione inferencia de tipos de dato a partir de propiedades RDF, como RDF::Literal::Datatype.

Comments are closed.