stringtranslate.com

SHACL

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

Los modelos SHACL se definen en términos de restricciones sobre el contenido, la estructura y el significado de un gráfico. SHACL es un lenguaje altamente expresivo. Entre otras, incluye características para expresar condiciones que restringen la cantidad 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 agregan capacidades de inferencia a SHACL, lo que permite a los usuarios definir qué nuevas declaraciones se pueden inferir a partir de declaraciones existentes (afirmadas).

Terminología

SHACL permite a sus usuarios describir formas de datos, centrándose en dónde se aplica una forma específica.

Formas de propiedad

Una forma de propiedad describe las características de los nodos del gráfico a los que se puede llegar a través de una ruta específica. Una ruta puede ser un único predicado (propiedad) o una cadena de predicados. Una forma de propiedad siempre debe especificar una ruta. Esto se hace mediante el uso sh:pathde predicado. Se puede pensar que las formas de propiedad que utilizan rutas simples describen valores de ciertas propiedades, por ejemplo, valores de una propiedad antigua o valores de una obra para una propiedad. Las rutas complejas pueden especificar una combinación de diferentes predicados en una cadena, incluida 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 formas de propiedad mediante sh:propertyun predicado. Las formas de propiedad también pueden ser "autónomas", es decir, completamente independientes de cualquier forma de nodo.

Formas de nodo

La forma de un nodo describe las características de nodos de gráficos específicos, independientemente de cómo se llegue a ellos. Se puede, por ejemplo, decir que ciertos nodos del gráfico deben ser literales o URI, etc. Es común incluir formas de propiedades en una forma de nodo, definiendo efectivamente valores de muchas propiedades diferentes de un nodo.

Por ejemplo, una forma de nodo para un empleado puede incorporar formas de propiedad 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 restricciones. SHACL proporciona muchos tipos de restricciones prediseñadas. Por ejemplo, sh:datatypese utiliza para describir el tipo de valores literales, por ejemplo, si son cadenas, números 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 de un valor.

Objetivos

Un objetivo conecta una forma con los datos que describe. La forma más sencilla de especificar un objetivo es decir 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 objetivo de una forma son:

  1. Decir explícitamente que una forma se dirige a miembros de una determinada clase. Esto se puede hacer en lugar de hacer que una forma de nodo también sea una clase.
  2. Decir 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 ternas con un determinado predicado.
  4. Usar una consulta SPARQL para seleccionar un conjunto de recursos al que apuntar.

Las declaraciones de objetivos se pueden incluir 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 objetivos se ignoran.

SHACL utiliza rdfs:subClassOfdeclaraciones para identificar objetivos. Una forma dirigida a miembros de una clase también apunta a miembros de todas sus subclases. En otras palabras, todas las definiciones SHACL de una clase las heredan las subclases.

Validación

SHACL permite la validación de gráficos. Un motor de validación SHACL toma como entrada un gráfico a validar (llamado gráfico de datos) y un gráfico que contiene declaraciones de formas SHACL (llamado gráfico de formas) y produce un informe de validación, también expresado como un gráfico. Todos estos gráficos se pueden representar en cualquier formato de serialización del Marco de descripción de recursos (RDF), incluido JSON-LD o Turtle .

SHACL es bastante único en su enfoque, ya que incorpora no solo la capacidad de especificar un nivel de gravedad de los resultados de la validación, sino también la capacidad de devolver sugerencias sobre cómo se pueden corregir los datos si se genera el resultado de la validación. Los niveles integrados son Infracción, Advertencia e Información, y el valor predeterminado es Infracción si no sh:severityse ha especificado ninguno para una forma. Los usuarios de SHACL pueden agregar otros niveles de gravedad personalizados. Los resultados de la 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 la validación. En los casos en los 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 procesables en el software, automatizando su aplicación a petición del usuario.

Especificaciones

World Wide Web Consortium publicó las siguientes especificaciones SHACL:

Herramientas de código abierto

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

Algunas de las herramientas de código abierto enumeradas en el informe son:

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

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

Herramientas comerciales

SHACL cuenta con el respaldo de la mayoría de los proveedores de tecnología RDF Graph, incluidos Cambridge Semantics (Anzo, disponible en el primer trimestre de 2022), Franz (AllegroGraph), Metaphacts, Ontotext (GraphDB), Stardog y TopQuadrant. Incluso hay soporte para productos comerciales que utilizan el modelo de datos de gráficos de propiedades, como Neo4J. [15]

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

Ver también

Referencias

  1. ^ abcd Knublauch, Holger; Kontokostas, Dimitris, eds. (2017-07-20). "Lenguaje de restricciones de formas (SHACL)". W3C . Grupo de trabajo sobre formas de datos RDF . Consultado el 6 de abril de 2021 .
  2. ^ ab "Historial de publicaciones del lenguaje de restricciones de formas (SHACL) - W3C". W3C . Consultado el 6 de abril de 2021 .
  3. ^ "Evaluación CAMSS de SHACL por parte de la Comisión Europea".
  4. ^ Knublauch, Holger; Allemang, Decano; Steyskal, Simon, eds. (08/06/2017). "Funciones avanzadas de SHACL". W3C . Grupo de trabajo sobre formas de datos RDF . Consultado el 6 de abril de 2021 .
  5. ^ Knublauch, Holger; María, Pano, eds. (09/01/2018). "Extensiones de JavaScript SHACL". W3C . Grupo comunitario SHACL.
  6. ^ Knublauch, Holger; María, Pano, eds. (09/01/2018). "Sintaxis compacta SHACL". W3C . Grupo comunitario SHACL.
  7. ^ Labra Gayo, José Emilio; Knublauch, Holger; Kontokostas, Dimitris, eds. (2021-01-22). "Informe de implementación y conjunto de pruebas de SHACL". W3C .
  8. ^ Lang, Samu (sin fecha). "dotNetRDF SHACL". langsamu.net . Consultado el 6 de abril de 2021 .
  9. ^ Lang, Samu (1 de junio de 2019). "Servicio de validación dotNetRDF SHACL". GitHub . Consultado el 7 de abril de 2021 .
  10. ^ Verano, Ashley; Coche, Nicolás (15 de agosto de 2018). "RDFLib/pySHACL: un validador de Python para SHACL". GitHub . Consultado el 6 de abril de 2021 .
  11. ^ Labra Gayo, José Emilio; et al. (Web Semántica Oviedo, Universidad de Oviedo). "weso/shaclex: implementación de 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 (1 de mayo de 2017). "Parque infantil SHACL". Parque infantil SHACL . Consultado el 7 de abril de 2021 .
  14. ^ "Validación de gráficos Neo4j frente a SHACL".
  15. ^ Knublauch, Holger (1 de mayo de 2017). "Parque infantil SHACL". Parque infantil SHACL . Consultado el 7 de abril de 2021 .

Otras lecturas