En RDF , un nodo en blanco (también llamado bnode ) es un nodo en un gráfico RDF que representa un recurso para el cual no se proporciona una URI o literal. [1] El recurso representado por un nodo en blanco también se denomina recurso anónimo . Según el estándar RDF, un nodo en blanco solo se puede utilizar como sujeto u objeto de un triple RDF.
Los nodos en blanco se pueden indicar mediante identificadores de nodo en blanco en los siguientes formatos: RDF/XML , RDFa , Turtle , N3 y N-Triples . El siguiente ejemplo muestra cómo funciona en RDF/XML .
<rdf:RDF xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ex= "http://example.org/data#" > <rdf:Descripción rdf:about= "http://example.org/web-data" ex:title= "Datos web" > <ex:profesor rdf:nodeID= "b" /> </rdf:Descripción> <rdf:Descripción rdf:nodeID= "b" ex:fullName= "Alice Carol" > <ex:homePage rdf:resource= "http://example.net/alice-carol" /> </rdf:Descripción> </rdf:RDF>
Los identificadores de nodo en blanco solo están limitados en alcance a una serialización de un gráfico RDF particular, es decir, el nodo _:b
en el ejemplo siguiente no representa el mismo nodo que un nodo nombrado _:b
en cualquier otro gráfico.
Los nodos en blanco también se pueden indicar mediante elementos anidados (en RDF/XML , RDFa , Turtle y N3 ). Aquí se muestran los mismos triples que los anteriores.
<rdf:RDF xmlns:rdf= "http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ex= "http://example.org/data#" > <rdf:Descripción rdf:about= "http://example.org/web-data" ex:title= "Datos web" > <ex:profesor> <rdf:Descripción ex:fullName= "Alice Carol" > <ex:homePage rdf:resource= "http://example.net/alice-carol" /> </rdf:Descripción> </ex:profesor> </rdf:Descripción> </rdf:RDF>
A continuación se muestra el mismo ejemplo en RDFa .
<p about= "http://example.org/web-data" > <span property= "ex:title" > Datos web </span> <span rel= "ex:profesor" > <a property= "ex:fullName" rel= "ex:homePage" href= "http://example.net/alice-carol" > Alice Carol </a> </span> </p>
A continuación se muestra el mismo ejemplo en Turtle .
@prefix ej: <http://example.org/data#> . <http://example.org/web-data> ej : título "Datos web" ; ej : profesor [ ej : nombre_completo "Alice Carol" ; ej : página_de_inicio <http://example.net/alice-carol> ] .
Los nodos en blanco se consideran simplemente como indicadores de la existencia de una cosa, sin utilizar un URI (Identificador uniforme de recursos) para identificar ninguna cosa en particular. Esto no es lo mismo que suponer que el nodo en blanco indica una URI "desconocida". [1]
Desde un punto de vista técnico, brindan la capacidad de:
A continuación se muestra un ejemplo en el que se utilizan nodos en blanco para representar recursos de las formas mencionadas anteriormente. En particular, el nodo en blanco con el identificador '_:students' representa un contenedor RDF Bag, el nodo en blanco con el identificador '_:address' representa un atributo complejo y aquellos con los identificadores '_:activity1' y '_:activity2' representan eventos en el ciclo de vida de un objeto digital.
<http://ejemplo.org/datos-web> ej : título "Datos web" ; ex : profesor _ : entidad ; ex : estudiantes _ : estudiantes ; ex : generadoPor _ : actividad1 ._ : entidad ej : nombrecompleto "Alice Carol" ; ex : página de inicio <http://ejemplo.net/alice-carol> ; ex : hasAddress _ : dirección ._ : DIRECCIÓN a ej : Dirección ; ej : dirección de la calle "123 Main St." ; ej : código postal "A1A1A1" ; ej : direcciónLocalidad "Londres" ._ : estudiantes a rdf : Bolsa ; ej .: hasMember _ : s1 ; por ejemplo : hasMember _ : s2 ._ : actividad1 un ejemplo : Evento ; ex : creador _ : entidad ; ex : atTime "martes 11 de febrero, 06:51:00 CST" ._ : actividad2 un ejemplo : Evento , ejemplo : Actualización ; ex : actionOver _ : actividad1 ; ex : creador _ : entidad2 ; ex : atTime "Lunes 17 de febrero, 08:12:00 CST" .
El lenguaje de ontología OWL utiliza nodos en blanco para representar clases anónimas, como uniones o intersecciones de clases, [3] o clases llamadas restricciones, definidas por una restricción en una propiedad. [4]
Por ejemplo, para expresar que una persona tiene como máximo una fecha de nacimiento, se definirá la clase "Persona" como una subclase de una clase anónima de tipo "owl:Restriction". Esta clase anónima se define mediante dos atributos que especifican la propiedad restringida y la restricción en sí ( cardinalidad ≤ 1).
<owl:Clase rdf:about= "http://example.org/ontology/Person" > <rdfs:subClassOf> <owl:Restricción> <owl:CardinalidadMáxima> 1 </owl:CardinalidadMáxima> <owl:onProperty rdf:resource= "http://xmlns.com/foaf/0.1/birthDate" /> </owl:Restricción> </rdfs:subClassOf> </owl:Clase>
Según una encuesta empírica [5] en Linked Data publicada en la Web, de los 783 dominios que contribuyen al corpus, 345 (44,1%) no publicaron ningún nodo en blanco. El porcentaje promedio de términos únicos que fueron nodos en blanco para cada dominio fue del 7,5%, lo que indica que, aunque un pequeño número de dominios de alto volumen publican muchos nodos en blanco, muchos otros dominios publican nodos en blanco con menor frecuencia.
De los 286,3 MB de términos únicos encontrados en posiciones de nivel de datos, 165,4 MB (57,8 %) eran nodos en blanco, 92,1 MB (32,2 %) eran URI y 28,9 MB (10 %) eran literales. Cada nodo en blanco tenía en promedio 5,2 ocurrencias de nivel de datos. Ocurrió, en promedio, 0,99 veces en la posición de objeto de un triple que no era de tipo rdf y 4,2 veces en la posición de sujeto de un triple.
Según el mismo estudio empírico de datos vinculados publicado en la Web, la mayoría de los documentos analizados contienen estructuras de nodos en blanco basadas en árboles. Una pequeña fracción contiene estructuras de nodos en blanco complejas para las que varias tareas son potencialmente muy costosas de calcular.
La existencia de nodos en blanco requiere un tratamiento especial en diversas tareas, cuya complejidad crece exponencialmente al número de estos nodos.
La incapacidad de hacer coincidir nodos en blanco aumenta el tamaño del delta (la cantidad de triples que se deben eliminar y agregar para transformar un gráfico RDF en otro) y no ayuda a detectar los cambios entre versiones posteriores de una base de conocimiento. La creación de un mapeo entre los nodos en blanco de dos bases de conocimiento comparadas que minimice el tamaño del delta es NP-Hard en el caso general. [6]
BNodeLand es un framework que aborda este problema y propone soluciones a través de herramientas específicas. [7]
Respecto al problema de implicación se demuestra que (a) decidir la implicación simple o RDF/S de grafos RDF es NP-Completo, [8] y (b) decidir la equivalencia de grafos RDF simples es Isomorfismo-Completo.