Je souhaite effectuer une suppression qui supprime tous les triplets où il y a moins de x objets distincts par sujet.Est-il possible de faire un SPARQL DELETE {} WHERE {} avec un filtre (COUNT (DISTINCT? Obj)> x) dans la clause WHERE?
La requête devrait ressembler à l'intention quelque chose comme ça après mon sentiment:
DELETE { ?sub ?pred ?obj . }
WHERE {
{SELECT ?sub ?pred ?obj (count(?obj) as ?count)
WHERE { ?sub ?pred ?obj .
} GROUP BY ?sub
} FILTER(?count < 14)
}
La précède ne fonctionne pas.
Un GROUP BY
est également nécessaire pour atteindre la partie ?obj
par ?sub
, mais je n'arrive pas à comprendre comment procéder.
Quelqu'un peut-il me pousser dans la bonne direction pour résoudre cette tâche?
Qu'entendez-vous par «ne fonctionne pas»? S'il y a un message d'erreur, veuillez l'inclure dans la question. – chrisis
Tout d'abord, je pense que vous devez avoir votre 'SELECT' droit, ce qui ne semble pas être le cas. Si vous pensez que votre défi peut être spécifique à Virtuoso, veuillez ajouter des informations sur la version, et aussi poser votre question à la liste de diffusion [Liste de diffusion Virtuoso Users] (https://lists.sourceforge.net/lists/listinfo/virtuoso-users/), les [Forums de support OpenLink] (http://boards.openlinksw.com/support/index.php) ou un [dossier de prise en charge OpenLink] (http://support.openlinksw.com/support/online-support.vsp) . (ObDisclaimer: Je travaille pour [OpenLink Software] (http://www.openlinksw.com/), fabricant de [Virtuoso] (http://virtuoso.openlinksw.com/).) – TallTed
Voulez-vous juste supprimer le '{? sub? pred? obj. } 'triple ou voulez-vous supprimer'? sub'? Si vous voulez ce dernier, vous voudrez supprimer les références à '? Sub'. – scotthenninger