2011-03-08 16 views
6

¿Cómo se analizan y se cargan los triples representados por un archivo de notación3 en una base de datos? Estoy algo familiarizado con Jena y Sesame, pero estos parecían estar diseñados para procesar RDF o Turtle, notación completa3.Cargando la notación3 en una base de datos

He encontrado relativamente pocas herramientas robustas para tratar con N3. Las pocas que he encontrado están en la lista here, y solo consisten en scripts de Python aproximados que solo pueden realizar acciones básicas de línea de comandos y parecen no tener un empaque, distribución o mantenimiento estándar. La biblioteca predeterminada de Python parece ser notation3.py pero no pude encontrar una sola página de inicio para ella, y encontré docenas de versiones diferentes diseminadas por Internet.

Por ejemplo, decir que tengo la siguiente N3 que representa una clasificación botánica:

{ 
    [] 
     :genus "Abies" ; 
     :species "alba" ; 
     :name [:value "Silver Fir" ; :usage "common" ; :language "English" ] ; 
     :name [:value "European Silver Fir" ; :usage "common" ; :language "English" ] ; 
     :name [:value "abeto blanco" ; :usage "common" ; :language "Spanish" ] ; 
     :name [:value "abeto plateado" ; :usage "common" ; :language "Spanish" ] ; 
     :name [:value "Edeltanne" ; :usage "common" ; :language "German" ] ; 
     :name [:value "Silbertanne" ; :usage "common" ; :language "German" ] ; 
     :name [:value "Weißtanne" ; :usage "common" ; :language "German" ] ; 
     :stem!:type :erect ; 
     :stem!:height [ :value!:start 30.0 ; :value!:end 50.0 ; :value!:units "m" ] ; 
     :bark!:color :grey ; 
     :bark!:ridges :irregular ; 
     :foliage!:seasonality :evergreen ; 
     :foliage!:type :needle ; 
     :foliage!:arrangement :alternate ; 
     :foliage!:length [ :value!:start 1.0 ; :value!:end 3.0 ; :value!:units "cm" ] ; 
     :foliage!:width [ :value!:start 0.2 ; :value!:end 0.3 ; :value!:units "cm" ] ; 
     :foliage!:color :green ; 
     :foliage!:spiney :FALSE ; 
     :flower [ :gender :male ; :inflorescence :catkin ; :sense :straight ; :color :brown ] ; 
     :flower [ :gender :male ; :inflorescence :catkin ; :sense :straight ; :color :yellow ] ; 
     :flower [ :gender :female ; :inflorescence :catkin ; :sense :straight ; :color :pink ] ; 
     :fruit [ :kind :cone ; :color :brown ; ] ; 
} 
:is-a :botanical-classification ; 
:source [ 
    :uri <http://originating/site> ; 
    :name "John Doe" ; 
    :data-collection-date "2005-01-01" ; 
] ; 
:transcribed-by "Al Nonymous" ; 
:transcription-date "2010-09-01" . 

Quiero ser capaz de cargar estos (y potencialmente miles de registros similares) en una base de datos para que pueda ejecutar consultas arbitrarias como, "¿Quién transcribió registros que contienen nombres comunes en español en el año 2010?" o "¿Cuál es el color de flor promedio asociado con el género X?"

¿Esto es actualmente práctico para hacer con las herramientas web semánticas actuales y N3?

Respuesta

3

El problema básico es que N3 siempre fue algo así como una notación experimental: el lenguaje completo nunca se implementó ampliamente. The diagram in this document es bastante informativo: su muestra utiliza literales literales, y estos se encuentran fuera de cualquiera de los subconjuntos N3 ampliamente implementados. Ahora que los gráficos con nombre son más utilizados, sería posible expresar la misma información en la mayoría de los sistemas RDF, incluido Jena, pero no analizando directamente su archivo de entrada.

Si fuera yo, estaría buscando escribir una etapa de transformación front-end, probablemente usando un lenguaje que sea bueno para cadenas y plantillas, como Ruby. Luego puede traducir sus archivos de entrada a un formato que los procesadores RDF estándar puedan manejar. Por ejemplo, el gráfico literal que denota las declaraciones hechas por "Al Nonymous" podría transformarse en un bNode que denota la acción de Al que afirma esa clasificación. Alternativamente, puede extraer cada gráfico de su literal y guardarlo en un archivo con un nombre de gráfico sintetizado, preservando así la estructura de gráficos anidados que tiene actualmente. Del mismo modo, la notación property!path podría reescribirse fácilmente en RDF estándar a expensas de ser un poco más detallado.

O bien, solicite a su proveedor de datos que le proporcione una salida en una forma más fácil de procesar.

Cuestiones relacionadas