¿Qué está pasando actualmente con los almacenes RDF?

La Web Semántica y los Datos Conectados son como el espacio cercano: no hay vida allí. Para ir allí durante un período más o menos largo... bueno, no sé qué te dijeron en tu infancia cuando dijiste "quiero ser astronauta". Pero puedes observar lo que sucede desde la Tierra; convertirse en un astrónomo aficionado o incluso profesional es mucho más fácil.

En este artículo se hablará de las tendencias recientes, no más antiguas de unos meses, en el mundo de los almacenes RDF. La metáfora en el primer párrafo fue inspirada por una imagen publicitaria de dimensiones épicas que se encuentra a continuación.


Imagen épica

¿Qué está pasando actualmente con los almacenes RDF?

I. GraphQL para acceder a RDF

Se dice, que GraphQL pretende convertirse en el lenguaje universal de acceso a bases de datos. Pero, ¿cómo están las cosas con la posibilidad de acceso utilizando GraphQL a RDF?

"Fuera de la caja" esta posibilidad la ofrecen:

Si el almacén no ofrece esta posibilidad, se implementa por uno mismo, escribiendo un "resolutor" correspondiente. Así lo hicieron, por ejemplo, en el proyecto francés DataTourisme. O ya no hace falta escribir nada, simplemente toma HyperGraphQL.

Desde el punto de vista de un ortodoxo defensor de la Web Semántica y los Datos Conectados, todo esto es, por supuesto, desalentador, ya que parece estar destinado a integraciones construidas alrededor de nuevos data silos, y no adecuadas para esas plataformas (por supuesto, almacenes RDF).

Las impresiones de comparar GraphQL con SPARQL son contradictorias.

  • Por un lado, GraphQL parece un pariente lejano de SPARQL: aborda problemas característicos de REST como la sobreselección y la multiplicidad de consultas — sin los cuales, supongo, no podría considerarse lenguaje de consultas, aunque solo para la web;
  • Por otro lado, decepciona la rígida esquematización de GraphQL. Por lo tanto, su "introspectividad" parece muy limitada en comparación con la completa reflexividad de RDF. Y no hay ningún análogo a los property paths, así que incluso no está muy claro por qué se llama "Graph-".

II. Adaptadores para MongoDB

Una tendencia complementaria a la anterior.

  • en Stardog ahora posiblemente — en particular, todo a través del mismo GraphQL — es configurar la visualización de datos de MongoDB en gráficos RDF virtuales;
  • GraphDB desde hace poco permite permite insertar fragmentos de MongoDB Query en SPARQL.

Hablando más ampliamente sobre los adaptadores a fuentes JSON, que permiten representar más o menos "sobre la marcha" el JSON almacenado en estas fuentes como RDF, se puede recordar también el ya bastante antiguo SPARQL Generate, que se puede adaptar, por ejemplo, a Apache Jena.

Resumiendo las primeras dos tendencias, se puede decir que los almacenes RDF demuestran una total disposición para integrar y funcionar en un entorno de "almacenamiento polivalente" (polyglot persistence). Sin embargo, es conocido que esta última ya no está de moda, y está siendo reemplazada por la multimodalidad. ¿Y cuál es la situación de la multimodalidad en el mundo de los almacenes RDF?

En resumen, es inexistente. La temática de las bases de datos multimodales merece un artículo aparte, por ahora se puede notar que no existen bases de datos multimodales "basadas" en el modelo gráfico (una variedad de este podría considerarse el RDF). Sobre una pequeña multimodalidad — el soporte de modelos gráficos alternativos por parte de los almacenes RDF — se hablará en la sección V.

III. OLTP vs. OLAP

Sin embargo, el mismo Gartner Quartz, Madagascar es el único país en África donde la velocidad de descarga de contenido supera los 10 Mbps., señala que la multimodalidad es una condición sine qua non en primer lugar para las bases de datos operacionales. Esto es comprensible: en la situación de "almacenamiento polivalente" los principales problemas surgen con la transaccionalidad.

Pero, ¿dónde se encuentran los almacenes RDF en la escala OLTP—OLAP? Yo respondería así: ni aquí, ni allí. Para designar a lo que están destinados, se necesita algún tipo de tercer acrónimo. Como opción, propondría OLIP — Procesamiento Intelectual Online.

Sin embargo, aún así:

La imagen de la publicidad del producto se incluyó al inicio del artículo. AnzoGraph se posiciona como una solución GOLAP. ¿Qué les parece SPARQL con funciones de ventana? — SELECT ?month (COUNT(?event) OVER (PARTITION BY ?month) AS ?events) WHERE { … }IV. RocksDB

Ya se mencionó anteriormente

un enlace

al anuncio de Stardog 7 Beta, donde se mencionaba que Stardog tiene la intención de utilizar RocksDB como sistema de almacenamiento subyacente — un almacén de "clave-valor", un fork de Facebook de LevelDB de Google. ¿Por qué ya se puede hablar de una cierta tendencia? En primer lugar, según un artículo de Wikipedia

, no solo los almacenes RDF están "migrando" a RocksDB. Hay proyectos que utilizan RocksDB como motor de almacenamiento en ArangoDB, MongoDB, MySQL y MariaDB, Cassandra. En segundo lugar, se están realizando proyectos sobre RocksDB (es decir, no productos) en la temática correspondiente., en RocksDB no solo se 'transplantan' almacenes RDF. Hay proyectos que utilizan RocksDB como motor de almacenamiento en ArangoDB, MongoDB, MySQL y MariaDB, Cassandra.

En segundo lugar, se están desarrollando proyectos (es decir, no productos) relacionados con RocksDB.

Por ejemplo, eBay utiliza RocksDB en la plataforma para su «gráfica de conocimiento». Por cierto, es curioso leer: the query language started as a home grown format, but more recently it has been transitioning to be much more like SPARQL. Como en el chiste: no importa cuántas gráficas de conocimiento hagamos, siempre resulta ser RDF.

Otro ejemplo es el que apareció hace unos meses Wikidata History Query Service. Antes de su aparición, los datos históricos de Wikidata tenían que obtenerse a través de MWAPI al estándar Mediawiki API. Ahora, mucho es posible con puro SPARQL. «Bajo el capó», también está RocksDB. Por cierto, parece que WDHQS fue hecho por alguien que trabajó en la importación de Freebase en Google Knowledge Graph.

V. Soporte de LPG

Recuerdo la principal diferencia entre los gráficos LPG y los gráficos RDF.

En LPG, se pueden adjuntar propiedades escalares a las instancias de las aristas, mientras que en RDF solo se pueden adjuntar a los «tipos» de las aristas (aunque no solo propiedades escalares, sino también relaciones comunes). Esta limitación de RDF en comparación con LPG se supera con diversas técnicas de modelado. La limitación de LPG en comparación con RDF es más difícil de superar, pero los gráficos LPG son más similares a las imágenes del libro de Harari, por lo que la gente los prefiere.

Es obvio que la tarea del «soporte de LPG» se divide en dos partes:

  1. realizar cambios en el modelo RDF que permitan simular las construcciones LPG;
  2. realizar cambios en el lenguaje de consultas RDF que permitan acceder a los datos en este modelo modificado, o implementar la posibilidad de realizar consultas a este modelo en lenguajes de consulta populares de LPG.

V.1. Modelo de datos

Aquí hay varios enfoques posibles.

V.1.1. Propiedad Singleton

El enfoque más literal para armonizar RDF y LPG es, probablemente, singleton property:

  • En lugar, por ejemplo, de un predicado :isMarriedTo se utilizan los predicados :isMarriedTo1, :isMarriedTo2 etc.
  • Luego, estos predicados se convierten en sujetos de nuevos tríos: :isMarriedTo1 :since "2013-09-13"^^xsd:date y demás.
  • La relación entre estas instancias de predicado y el predicado común se establece mediante tríos del tipo :isMarriedTo1 rdf:singletonPropertyOf :isMarriedTo.
  • Es obvio que rdf:singletonPropertyOf rdfs:subPropertyOf rdf:type, pero piensa en por qué no deberías escribir simplemente :isMarriedTo1 rdf:type :isMarriedTo.

La tarea del «soporte de LPG» se resuelve aquí a nivel de RDFS. Esta solución requiere realizar cambios en el correspondiente estándar. Algunos cambios pueden ser necesarios en los almacenes RDF que admiten la conexión de inferencias, y mientras tanto, la Propiedad Singleton puede verse simplemente como otra técnica de modelado.

V.1.2. Reificación Hecha Correctamente

Enfoques menos ingenuos provienen de la conciencia de que las instancias de propiedades pueden ser instanciadas por tripletas. Al poder hablar de tripletas, obtendremos la capacidad de hablar también sobre instancias de propiedades.

El enfoque más sólido de estos es RDF*, también conocido como RDR, nacido en el seno de Blazegraph. Desde el principio lo eligió para sí mismo y AnzoGraph. La solidez del enfoque se determina por el hecho de que en su marco disponibles los cambios correspondientes en la Semántica RDF. La esencia, sin embargo, es extremadamente simple. En la serialización Turtle de RDF, ahora se podrá escribir algo así:

<> :since "2013-09-13"^^xsd:date.

V.1.3. Otros Enfoques

No es necesario complicarse con la semántica formal, sino simplemente considerar que las tripletas tienen ciertos identificadores, que son, por supuesto, URI, y formar nuevas tripletas con estos URI. Solo quedará otorgar acceso a estos URI en SPARQL. Así actúa Stardog.

En Allegrograph tomaron un camino intermedio. Se sabe que los identificadores de tripletas en Allegrograph hay, pero al implementar atributos de tripleta no se exponen externamente. Sin embargo, la semántica formal todavía está muy lejos. Es notable que los atributos de tripletas no son URI, y los valores de estos atributos también pueden ser solo literales. Los adeptos de LPG obtienen exactamente lo que querían. En un formato inventado llamado NQX, un ejemplo similar al anterior para RDF* se ve así:

:bob :marriedTo :alice {"since" : "2013-09-13"}

V.2. Lenguajes de Consultas

Habida cuenta de que se apoya de alguna manera a LPG a nivel de modelo, es necesario permitir realizar consultas a los datos en dicho modelo.

  • Blazegraph para consultas a RDF* admite SPARQL*. y GremlinUna consulta en SPARQL* se vería así:

 SELECT * { <> :since ?since }

  • AnzoGraph también admite SPARQL*. y tiene la intención de soportar Cypher, el lenguaje de consultas en Neo4j.
  • Stardog admite su propio una extensión SPARQL y de nuevo Gremlin. Se puede obtener en SPARQL el URI de la tripleta y la "metainformación" utilizando una construcción similar a la siguiente:

SELECT * {
    BIND (stardog:identifier(:bob, :isMarriedTo, ?wife) AS ?id)
    ?id :since ?since
}

 SELECT * { ("since" ?since)  franz:attributesNameValue  ( :bob :marriedTo ?wife ) }

Por cierto, GraphDB durante un tiempo admitió Tinkerpop/Gremlin, sin admitir LPG, pero en la versión 8.0 o 8.1 eso cesó.

VI. Endurecimiento de licencias

No ha habido novedades recientes en la intersección de los conjuntos «triplestore of choice» y «open source triplestore». Los nuevos almacenes RDF de código abierto todavía están lejos de ser una opción adecuada para el uso diario, y el código fuente de los nuevos almacenes RDF que desearíamos emplear (como AnzoGraph) está cerrado. Podríamos hablar incluso de reducciones...

Por supuesto, el código abierto no se cierra por sí mismo, pero algunos almacenes con código abierto gradualmente dejan de considerarse opciones dignas. Virtuoso, que tiene una edición de código abierto, en mi opinión, está plagado de errores. Blazegraph fue adquirido por AWS y se convirtió en la base de Amazon Neptune; ahora no está claro si habrá otro lanzamiento. Solo queda Jena...

Sin embargo, si el código abierto no es muy importante y solo se quiere probar, la situación no es tan prometedora como antes. Por ejemplo:

  • Stardog deja de distribuir una versión gratuita (aunque ha duplicado el período de prueba de la versión normal);
  • en GraphDB Cloud, donde anteriormente se podía elegir un plan básico gratuito, ha suspendido el registro de nuevos usuarios.

En general, para el ciudadano IT común, el espacio se está volviendo cada vez más inaccesible, y su dominación es cada vez más una tarea de las corporaciones.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster