2016-04-25 1 views
1

J'écris une application en utilisant le framework Apache Jena. Avec cela, je suis capable de tout faire (insérer, mettre à jour, sélectionner). Mais je ne peux pas comprendre comment insérer correctement des nœuds vides en utilisant une requête INSERT.Quelle est la manière universelle appropriée d'insérer des nœuds vides en utilisant SPARQL?

Y a-t-il une approche de référence pour cela (qui fonctionne avec chaque point de terminaison)? Je sais que SPARQL 1.1 a introduit certaines fonctionnalités pour cela, mais cela ne semble pas fonctionner avec un point de terminaison Virtuoso.

+0

Il peut aider à penser aux bNodes (nœuds vides, nœuds sans nom) comme des pronoms - à utiliser lorsque vous ne connaissez pas le nom propre d'une entité qui existe et à laquelle vous devez vous référer, que ce soit pour le décrire ou pour décrire d'autres ent ities. Pour que les autres vous conseillent, il est utile de savoir ce que vous avez essayé, quels résultats vous avez obtenus, et comment ils diffèrent de ce que vous attendiez/souhaitiez. – TallTed

+0

S'il existe réellement un aspect spécifique à Virtuoso, ces questions sont souvent traitées plus rapidement et avec plus de précision dans des forums centrés sur Virtuoso comme la [liste de diffusion Virtuoso Users] (https://lists.sourceforge.net/lists/listinfo/ virtuose), [les forums de support OpenLink] (http://boards.openlinksw.com/support/index.php), ou un [cas de support OpenLink] (http://support.openlinksw.com/support/online -support.vsp). (ObDisclaimer: Je travaille pour OpenLink Software, producteur de Virtuoso.) – TallTed

Répondre

1

Il existe plusieurs syntaxes à utiliser. Supposons que vous souhaitiez ajouter un nœud de type :Person à une propriété d'objet nommée child. Voici une façon:

?s :child [a :Person] . 

Et un autre:

?s :child [] . 
[] a :Person . 

Et la notation _:bn est assez universelle, et utile quand il y a plus d'un bnode dans un graphique:

?s :child _:b0 . 
_:b0 a :Person . 
+0

"utile quand il y a plus d'un nœud dans un graphique:" Je pense que c'est plus utile quand vous avez besoin de vous référer à un nœud plusieurs fois. Par exemple,. ': s1: p _: b0. : s2: p _: b0 '. –

+0

Merci pour cette réponse. Cela a rendu ma vision de bNodes plus claire. Et j'ai également réalisé qu'il ne serait peut-être pas possible d'insérer des bNodes à partir d'une table avec des requêtes INSERT DATA au niveau des lignes. (Et en gardant la connexion entre les bNodes dans la table). Donc, je suppose qu'il serait plus sage de trouver un moyen d'insérer un modèle local dans le point de terminaison distant directement. – oole