• [^] # Re: Euh ???

    Posté par . En réponse à la dépêche SPARQL, le SQL du Web, et Linked Data Fragment : le point sur le requêtage du Web. Évalué à 2.

    De rien ! Peut-être que tu pourrais proposer une reformulation du § concerné aux modos.

    Désolé de pinailler mais EXISTS et la quantification existentielle ne sont pas AMHA deux notions équivalentes. La première renvoie à un opérateur sur un (mini-)graphe tandis que la deuxième est basiquement un opérateur sur une variable. C'est d'ailleurs pour cela qu'on peut remplacer une variable par un bnode et avoir le même résultat dans les deux cas.

    EXISTS est tellement conçu pour les graph patterns que la norme en dote une fonction dans l'algèbre des requêtes. Cela dit, l'équivalence bnodes ≣ variables devrait être utilisé au sein de basic graph patterns car en dehors de ça, les implémentations ont (auraient ?) la latitude d'adopter des stratégies qui leur chantent, sans oublier que si l'on passe à OWL, c'est quasi-garanti de se tirer une balle dans le pied avec cette équivalence. Lecture supplémentaire sur les bnodes avec une enquête sur leur utilisation dans des applications concrètes : DOI : 10.1007/978-3-642-25073-6_27. Le W3C en parle succinctement dans les sections 3.4 et 3.5 de ce document.

    Qu'est-ce que ça donne en pratique sur le nœud que tu as présenté ? Tout d'abord, les moteurs de recherche me renvoient sur la spéc. des dumps de WikiData où on peut lire ceci :

    Special values
    Wikibase data model has two special values - somevalue (unknown) and novalue, specifying value that is known to exist but its exact value is unknown and the value that is known to not exist.

    Somevalue
    Unknown value is represented as RDF blank node in both simplified and full statements (le dernier graissage est de moi).

    Ensuite, un peu de code pour accompagner toute cette exégèse : en reprenant la ressource que tu as introduite dans la dépêche, demandons au graphe des connaissances de WikiData s'il y aurait des pères qui sont encore vivants alors que leur progéniture a été touchée par la mort.

    PREFIXwdt:<http://www.wikidata.org/prop/direct/>
    PREFIXwikibase:<http://wikiba.se/ontology#>
    SELECTDISTINCT?pèreLabel?enfantLabel?enfant
    WHERE{
    ?enfantwdt:P22?père.
    FILTERNOT EXISTS{?pèrewdt:P570?dateDécèsPère.}# L.a-1
    FILTEREXISTS{?enfantwdt:P570?dateDécèsEnfant.}# L.b-1
    SERVICEwikibase:label{
    bd:serviceParamwikibase:language"fr".
    }
    }

    La requête illustre bien que EXISTS opère sur des graph patterns. Dans L.a-1 et L.b-1, les variables dateDécèsPère et dateDécèsEnfant peuvent être substituées par des bnodes, façon

    # [...]
    FILTERNOT EXISTS{?pèrewdt:P570_:x.}# L.a-2
    FILTEREXISTS{?enfantwdt:P570_:y.}# L.b-2
    # [...]

    et le résultat sera identique au premier.

    Enfin, nul doute que tu étais déjà au courant de tout ça ― ton passif sur ces sujets est éloquent de soi-même ― certainement que la phrase a été rapidement écrite entre deux itérations de zoom sur des fractales :p Bref, j'écris tout ce qui précède pour faire de la retape auprès des néophytes dans le domaine.

    P.S. Le résultat de la requête contient des choses rigolotes à cause de notices incomplètes sur certains personnages. Ainsi apprend-on par exemple que Sun Tzu est mort et que son père, Sun Ping, est toujours vivant. Le patriarche aurait-il trouvé et appliqué victorieusement l'art de la guerre ... contre la mort ?