es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Consulta de eliminación SPARQL con FILTER NOT EXISTS no funcionando

Hola, actualmente estoy teniendo dificultades con una consulta DELETE, mi consulta inicial es la siguiente:

PREFIX illumination: <http: ontology.medievenl.fr#="">
SELECT ?a
where 
{
  ?a a illumination:Annotation .
  FILTER NOT EXISTS{
    ?e a illumination:Enluminure .
    ?a a illumination:Annotation .
    ?e illumination:hasAnnotation ?a
  }
}

Con resultado de una tupla que quiero eliminar:

illumination:annotationbouquinenluminure

Aquí hay algunas consultas que he intentado:

DELETE
    {
    ?a a illumination:Annotation .
    }
    where 
    {
        ?a a illumination:Annotation .
        FILTER NOT EXISTS{
        ?e a illumination:Enluminure .
        ?a a illumination:Annotation .
        ?e illumination:hasAnnotation ?a}
    }

Seleccionando ?s ?o ?p y seleccionando mi ?s específico en el where

DELETE
    {
    ?a ?x ?z .
    }
    where 
    {
    select ?a
    where{
        ?a a illumination:Annotation .
        FILTER NOT EXISTS{
        ?e a illumination:Enluminure .
        ?a a illumination:Annotation .
        ?e illumination:hasAnnotation ?a}} 
    }

Parece que el FILTER NOT EXISTS no se traduce tan bien como debería o no puedo entender cuál es el problema. Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Estimado usuario,

    Me parece que el problema con tu consulta DELETE puede estar en la forma en que estás utilizando FILTER NOT EXISTS. Aquí tienes un ejemplo de una consulta DELETE que funciona y debería resolver tu problema:

    PREFIX illumination: <http: ontology.medievenl.fr#="">
    DELETE
    WHERE 
    {
      ?a a illumination:Annotation .
      FILTER NOT EXISTS{
        ?e a illumination:Enluminure .
        ?e illumination:hasAnnotation ?a
      }
      FILTER (?a = illumination:annotation_bouquin_enluminure)
    }
    

    Aquí estamos eliminando todas las tripletas donde ?a es una instancia de illumination:Annotation, pero solo cuando no hay ningún ?e que sea una instancia de illumination:Enluminure que tenga una relación illumination:hasAnnotation con ella. Además, estamos filtrando para que solo se elimine la tripleta donde ?a es illumination:annotation_bouquin_enluminure.

    ¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.

    Saludos cordiales,
    Experto en TI especializado en anotaciones, SPARQL y web semántica.

Comments are closed.