Articulo de referencia

SHACL

El lenguaje de restricciones de formas [ 1 ] ( SHACL ) es un lenguaje estándar del Consorcio World Wide Web (W3C) para describir grafos del Marco de Descripción de Recursos (RDF...

El lenguaje de restricciones de formas [ 1 ] ( SHACL ) es un lenguaje estándar del Consorcio World Wide Web (W3C) para describir grafos del Marco de Descripción de Recursos (RDF). SHACL ha sido diseñado para mejorar las capas de interoperabilidad semántica y técnica de las ontologías expresadas como grafos RDF. [ 3 ]

Los modelos SHACL se definen en términos de restricciones sobre el contenido, la estructura y el significado de un grafo. SHACL es un lenguaje altamente expresivo. Entre otras características, incluye la posibilidad de expresar condiciones que limitan el número de valores que puede tener una propiedad, el tipo de dichos valores, rangos numéricos, patrones de coincidencia de cadenas y combinaciones lógicas de dichas restricciones. SHACL también incluye un mecanismo de extensión para expresar condiciones más complejas en lenguajes como SPARQL y JavaScript . Las reglas SHACL añaden capacidades de inferencia, permitiendo a los usuarios definir qué nuevas afirmaciones se pueden inferir a partir de afirmaciones existentes.

Terminología

SHACL permite a sus usuarios describir las formas de los datos, indicando dónde se aplica una forma específica.

Formas de propiedad

Una forma de propiedad describe las características de los nodos de un grafo a los que se puede acceder mediante una ruta específica. Una ruta puede ser un predicado (propiedad) simple o una cadena de predicados. Una forma de propiedad siempre debe especificar una ruta. Esto se logra mediante el uso sh:pathde predicados. Se puede pensar en formas de propiedad que usan rutas simples como descripciones de valores de ciertas propiedades, por ejemplo, valores de una propiedad de edad o valores de una propiedad de trabajo . Las rutas complejas pueden especificar una combinación de diferentes predicados en una cadena, incluyendo la dirección inversa, predicados alternativos y cadenas transitivas.

Las formas de propiedad se pueden definir como parte de una forma de nodo. En este caso, una forma de nodo apunta a las formas de propiedad mediante sh:propertyun predicado. Las formas de propiedad también pueden ser "independientes", es decir, completamente independientes de cualquier forma de nodo.

Formas de los nodos

La forma de un nodo describe las características de nodos específicos de un grafo, independientemente de cómo se acceda a ellos. Por ejemplo, se puede decir que ciertos nodos del grafo deben ser literales o URI, etc. Es común incluir formas de propiedades en la forma de un nodo, definiendo así los valores de muchas propiedades diferentes de un nodo.

Por ejemplo, la forma de un nodo para un empleado puede incorporar formas de propiedades para la edad y trabajos para las propiedades.

Restricciones

Una restricción es una forma de describir diferentes características de los valores. Una forma contendrá una o más declaraciones de restricción. SHACL proporciona muchos tipos de restricciones predefinidos. Por ejemplo, sh:datatypese utiliza para describir el tipo de valores literales, por ejemplo, si son cadenas, enteros o fechas. sh:minCountSe utiliza para describir el número mínimo requerido de valores. sh:lengthSe utiliza para describir el número de caracteres para un valor.

Objetivos

Un destino conecta una forma con los datos que describe. La forma más sencilla de especificar un destino es indicar que una forma de nodo también es una clase. Esto significa que su definición es aplicable a todos los miembros (instancias) de una clase. Otras formas de definir el destino de una forma son:

  1. Indicar explícitamente que una forma apunta a miembros de una clase determinada. Esto se puede hacer en lugar de convertir la forma de un nodo en una clase.
  2. Indicar que una forma apunta a un recurso específico proporcionando su URI.
  3. Decir que una forma apunta a todos los sujetos o a todos los objetos de tríos con un predicado determinado.
  4. Utilizar una consulta SPARQL para seleccionar un conjunto de recursos a los que dirigirse.

Las declaraciones de destino pueden incluirse en una forma de nodo o en una forma de propiedad. Sin embargo, cuando una forma de propiedad forma parte de una forma de nodo, sus propios destinos se ignoran.

SHACL utiliza rdfs:subClassOfsentencias para identificar los objetivos. Una forma que apunta a los miembros de una clase también apunta a los miembros de todas sus subclases. En otras palabras, todas las definiciones SHACL de una clase son heredadas por las subclases.

Validación

SHACL permite la validación de grafos. Un motor de validación SHACL toma como entrada un grafo a validar (denominado grafo de datos) y un grafo que contiene declaraciones de formas SHACL (denominado grafo de formas), y genera un informe de validación, también expresado como un grafo. Todos estos grafos pueden representarse en cualquier formato de serialización del Resource Description Framework (RDF), incluidos JSON-LD o Turtle .

SHACL es bastante único en su enfoque, ya que incorpora no solo la capacidad de especificar un nivel de gravedad para los resultados de validación, sino también la capacidad de devolver sugerencias sobre cómo se pueden corregir los datos si se genera un resultado de validación. Los niveles incorporados son Violación, Advertencia e Información, siendo Violación por defecto si no sh:severityse ha especificado ninguno para una forma. Los usuarios de SHACL pueden agregar otros niveles de gravedad personalizados. Los resultados de validación también pueden tener valores para otras propiedades, como se describe en la especificación. Por ejemplo, la propiedad sh:resultMessageestá diseñada para comunicar detalles textuales adicionales a los usuarios, incluidas recomendaciones sobre cómo se pueden corregir los datos para abordar el resultado de validación. En los casos en que una restricción no tiene ningún valor para sh:messageen el gráfico de formas, el procesador SHACL puede generar automáticamente otros valores para sh:resultMessage. Algunos procesadores SHACL (por ejemplo, el implementado por TopQuadrant) hicieron que estas sugerencias fueran ejecutables en software, automatizando su aplicación a petición del usuario.

Presupuesto

El Consorcio World Wide Web publicó las siguientes especificaciones SHACL:

  • SHACL [ 1 ] (Recomendación Técnica del W3C) es el documento principal que define las características de SHACL Core y su mecanismo de extensión, denominado SHACL-SPARQL. SHACL Core define la sintaxis y estructura básicas de las formas, las restricciones, los tipos de restricciones predefinidos y cómo vincular las formas a los nodos de datos. SHACL-SPARQL define cómo expresar restricciones que no están cubiertas por los tipos de restricciones predefinidos.
  • SHACL Advanced Features [ 4 ] (Nota del Grupo de Trabajo del W3C), cuya versión más reciente es mantenida por el Grupo Comunitario SHACL, define la compatibilidad con las reglas SHACL, una potente función (inspirada en las reglas SPIN) para transformaciones, inferencias y asignaciones de datos basadas en la forma de los datos. También incluye extensiones de SHACL-SPARQL, como funciones definidas por el usuario.
  • Las extensiones de JavaScript de SHACL [ 5 ] (Nota del Grupo de Trabajo del W3C) definen cómo se puede usar JavaScript para expresar restricciones, reglas, funciones y otras características. Esto abarca un ámbito similar al de SHACL-SPARQL, pero utilizando JavaScript como lenguaje de ejecución.
  • Sintaxis compacta de SHACL [ 6 ] (Informe del grupo comunitario de SHACL).

Herramientas de código abierto

El informe de implementación y conjunto de pruebas SHACL [ 7 ], enlazado desde la especificación SHACL del W3C, enumera algunas herramientas de código abierto que podrían usarse para la validación SHACL a partir de junio de 2019. A finales de 2019, muchos proveedores comerciales de bases de datos y marcos RDF anunciaron soporte para al menos SHACL Core.

Algunas de las herramientas de código abierto que se mencionan en el informe son:

  • dotNetRDF SHACL: un servicio de validación SHACL en línea escrito en el .NET Framework [ 8 ] [ 9 ]
  • pySHACL: una biblioteca validadora SHACL de código abierto para uso en línea de comandos escrita en Python [ 10 ].
  • SHaclEX: una implementación en Scala de SHACL y ShEx [ 11 ]
  • API SHACL de TopBraid: una implementación de código abierto de SHACL desarrollada por TopQuadrant, basada en Apache Jena . Incluye SHACL Core y validación SHACL-SPARQL, así como funciones avanzadas de SHACL, extensión de JavaScript para SHACL y sintaxis compacta de SHACL. El mismo código se utiliza en los productos comerciales de TopBraid. [ 12 ]

SHACL Playground es un servicio gratuito de validación SHACL implementado en JavaScript. [ 13 ]

Eclipse RDF4J es un marco de trabajo Java de código abierto de la Fundación Eclipse para el procesamiento de datos RDF, que admite la validación SHACL. [ 14 ]

Herramientas comerciales

SHACL es compatible con la mayoría de los proveedores de tecnología de grafos RDF, incluidos Cambridge Semantics (Anzo), [ 15 ] eccenca Corporate Memory, [ 16 ] Franz ( AllegroGraph ), Data Treehouse (maplib), [ 17 ] Metaphacts, [ 18 ] Ontotext ( GraphDB ), [ 19 ] Stardog [ 20 ] y TopQuadrant. Incluso hay soporte en productos comerciales que utilizan el modelo de datos de grafos de propiedades, como Neo4J . [ 21 ]

Los niveles de implementación pueden variar. Como mínimo, los proveedores son compatibles con SHACL Core. Algunos también son compatibles con SHACL SPARQL para una mayor expresividad, mientras que otros pueden ser compatibles con las funciones avanzadas de SHACL, que incluyen reglas y funciones.

Véase también

Referencias

  1. ^ a b c d Knublauch, Holger; Kontokostas, Dimitris, eds. (2017-07-20). "Shapes Constraint Language (SHACL)" . W3C . RDF Data Shapes Working Group . Recuperado el 2021-04-06 .
  2. ^ a b "Historial de publicaciones del lenguaje de restricciones de formas (SHACL) - W3C" . W3C . 20 de julio de 2017. Consultado el 6 de abril de 2021 .
  3. ^ "Evaluación de SHACL por parte de CAMSS realizada por la Comisión Europea" .
  4. ^ Knublauch, Holger; Allemang, Dean; Steyskal, Simon, eds. (2017-06-08). "Características avanzadas de SHACL" . W3C . Grupo de trabajo sobre formas de datos RDF . Recuperado el 2021-04-06 .
  5. ^ Knublauch, Holger; Maria, Pano, eds. (2018-01-09). "Extensiones JavaScript de SHACL" . W3C . Grupo de la comunidad SHACL.
  6. ^ Knublauch, Holger; Maria, Pano, eds. (2018-01-09). "Sintaxis compacta de SHACL" . W3C . Grupo de la comunidad SHACL.
  7. ^ Labra Gayo, Jose Emilio; Knublauch, Holger; Kontokostas, Dimitris, eds. (2021-01-22). "SHACL Test Suite and Implementation Report" . W3C .
  8. ^ Lang, Samu (sin fecha). "dotNetRDF SHACL" . langsamu.net . Consultado el 6 de abril de 2021 .
  9. ^ Lang, Samu (2019-06-01). "Servicio de validación SHACL de dotNetRDF" . GitHub . Recuperado el 2021-04-07 .
  10. ^ Sommer, Ashley; Car, Nicholas (15 de agosto de 2018). "RDFLib/pySHACL: Un validador de Python para SHACL" . GitHub . Recuperado el 6 de abril de 2021 .
  11. ^ Labra Gayo, Jose Emilio; et al. (Web Semantics Oviedo, Universidad de Oviedo). "weso/shaclex: implementación SHACL/ShEx" . GitHub . Consultado el 6 de abril de 2021 .
  12. ^ Knublauch, Holger (24 de mayo de 2015). "TopQuadrant/shacl: API SHACL en Java basada en Apache Jena" . GitHub . Consultado el 6 de abril de 2021 .
  13. ^ Knublauch, Holger (2017-05-01). "SHACL Playground" . SHACL Playground . Recuperado el 2021-04-07 .
  14. ^ "Programación con RDF4J: Validación con SHACL" . Consultado el 29 de agosto de 2024 .
  15. ^ "AnzoGraph DB 3.1: Validar datos con SHACL (Vista previa)" . Consultado el 29 de agosto de 2024 .
  16. ^ "eccenca Corporate Memory: Building a customized User Interface" . Consultado el 8 de diciembre de 2025 .
  17. ^ "GitHub: maplib" . Consultado el 19 de enero de 2026 .
  18. ^ "metaphactory: Servicio de calidad de datos" . Consultado el 29 de agosto de 2024 .
  19. ^ "GraphDB 10.7: Validación SHACL" . Consultado el 29 de agosto de 2024 .
  20. ^ "Stardog: Restricciones de calidad de datos: Restricciones SHACL" . Consultado el 29 de agosto de 2024 .
  21. ^ "Validación de grafos Neo4j contra SHACL" . Consultado el 29 de agosto de 2024 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=SHACL&oldid=1333725045 "