Migration des requêtes

Dans IBM® Rational Engineering Lifecycle Manager versions 4.0.3 et ultérieures, certaines représentations de données dans l'index de cycle de vie ont changé. Ces modifications peuvent nécessiter la mise à jour de vos requêtes SPARQL, notamment des requêtes utilisées dans les vues. Cette rubrique décrit les modifications et explique comment rédiger des requêtes qui fonctionnent dans toutes les versions.

Modifications apportées à la représentation du produit

La représentation des données a été changée dans la version 4.0.3 pour la rendre plus compatible avec l'évolution de la plateforme de données liées de plusieurs façons :
  • Le lien entre les produits et leurs vues est désormais le lien pd:view du produit vers la vue, plutôt qu'un lien pd_ext:isViewOf de la vue vers le produit.
  • La chaîne de titre du produit (pd:Item) et de la partie (pd:Part) a changé : son type, qui était un littéral chaîne simple, est désormais rdf:XMLLiteral.
  • La version précédente d'un produit est désormais indiquée avec le lien prov:wasRevisionOf plutôt que le lien dcterms:replaces.

Mettez à jour vos requêtes pour qu'elles utilisent les deux formes du lien et pour transtyper le titre en chaîne avant son utilisation ou sa recherche. Vous pouvez utiliser un chemin de propriété SPARQL pour faire correspondre plusieurs alternatives. Par conséquent, vous pouvez utiliser l'UNION de deux alternatives, ou un chemin de propriété tel que prov:wasRevisionOf|dcterms:replaces, pour faire correspondre les représentations 1.x et 4.0.3 et ultérieures.

Dans les définitions de produit dans lesquelles les informations de version requièrent l'identification d'un graphique spécifique, les chemins de propriété tels que pd:view|^pd:isViewOf ne fonctionnent pas car les deux alternatives se trouvent dans des graphiques différents. Dans ce cas, vous devez utiliser l'opérateur UNION.

Si vous demandez un produit dont le titre inclut des guillemets, une perluète ou des symboles inférieur à, ces caractères doivent être codés en XML dans la représentation XMLLiteral 4.0.3 et versions ultérieures.

Par exemple, la requête suivante affiche les produits dont le titre inclut les caractères "auto&boat", la version précédente, ainsi que les produits qui sont des enfants immédiats de chaque produit :

PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX prov: <http://www.w3.org/ns/prov#>
PREFIX pd: <http://jazz.net/ns/pd#>
PREFIX pd_ext: <http://jazz.net/ns/pd/extensions#>

SELECT ?parentVersion ?predecessor ?childVersion
WHERE {
   GRAPH ?parentVersion
   {
      ?parent a pd:Item ;
         dcterms:title ?title .
      OPTIONAL { ?parent prov:wasRevisionOf|dcterms:replaces ?predecessor }
   }
   FILTER regex(str(?title),".*auto(&|&)boat.*","","i")
   {
      { GRAPH ?parentVersion { ?parent pd:view ?view } }
      UNION
      { ?view pd:isViewOf ?parentVersion }
   }
   OPTIONAL { ?view dcterms:hasPart/pd_ext:binding ?childVersion }
}

Identificateur modifié pour les produits

Désormais, la chaîne dcterms:identifier d'un produit est une chaîne unique longue. Si possible, utilisez une autre propriété connue du produit dans vos requêtes. Sinon, mettez à jour les requêtes qui utilisent dcterms:identifier en vue de l'utilisation du nouvel identificateur.

Nouvelles propriétés de dimension pour les branches de produit

La version 4.0.3 indexe des données sur les propriétés de dimension des branches de produit. Par exemple, vous pouvez augmenter la requête précédente pour qu'elle affiche les informations de dimension (branche) pour le produit parent :

PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX prov: <http://www.w3.org/ns/prov#>
PREFIX pd: <http://jazz.net/ns/pd#>
PREFIX pd_ext: <http://jazz.net/ns/pd/extensions#>

SELECT ?parentVersion ?dtitle ?dvalue ?predecessor ?childVersion
WHERE {
   GRAPH ?parentVersion
   {
      ?parent a pd:Item ;
         dcterms:title ?title .
      OPTIONAL { ?parent prov:wasRevisionOf|dcterms:replaces ?predecessor }
      OPTIONAL { ?parent pd_ext:dimensions ?bn }
   }
   FILTER regex(str(?title),".*auto(&|&)boat.*","i")
   {
      { GRAPH ?parentVersion { ?parent pd:view ?view } }
      UNION
      { ?view pd:isViewOf ?parentVersion }
   }
   OPTIONAL { ?view dcterms:hasPart/pd_ext:binding ?childVersion }
   ?bn ?dimension ?dvalue .
   ?dimension dcterms:title ?dtitle .
}

Modifications apportées aux données utilisateur

Dans toutes les éditions précédentes, l'index représentait l'adresse électronique d'un utilisateur avec un codage URL incorrect. Par exemple, l'URI de l'adresse électronique mailto:susan@example.com était représentée dans l'index sous la forme mailto:susan%40example.com. Cet incident a été corrigé dans Jazz 4.0.3, mais pas dans l'édition DOORS 9. Par conséquent, les requêtes doivent admettre les deux formes d'adresse électronique :

PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX oslc_cm: <http://open-services.net/ns/cm#>

SELECT ?cr ?title ?contribMbox
WHERE {
  ?cr a oslc_cm:ChangeRequest ;
    dcterms:type "Task"^^xsd:string ;
    dcterms:title ?title ;
    dcterms:contributor/foaf:mbox ?contribMbox .
  FILTER regex(str(?contribMbox),"susan(@|%40)example.com")
}

Commentaires