Миграция запросов

В IBM® Rational Engineering Lifecycle Manager 4.0.3 и более поздней изменено представление некоторых данных в индексе жизненного цикла. Эти изменения могут потребовать изменений в запросах SPARQL, включая запросы в представлениях. В этом разделе описаны изменения и способы записи запросов, работающих во всех версиях.

Изменения в представлении продуктов

В выпуске 4.0.3 представление данных изменилось для большей совместимости с усовершенствованием платформы связанных данных следующим образом:
  • Связь между продуктами и их представлениями теперь использует ссылку pd:view из продукта на представление, а не ссылку pd_ext:isViewOf из представления на продукт.
  • Тип строк заголовка для продукта (pd:Item) и компонента (pd:Part) изменен на тип rdf:XMLLiteral с простого строкового литерала.
  • Предыдущая версия продукта теперь отображается с помощью ссылки prov:wasRevisionOf, а не dcterms:replaces

Обновите запросы для использования обеих форм ссылок, а также для преобразования типа заголовка к строке для его применения или поиска. С помощью пути свойства SPARQL можно сопоставлять несколько вариантов. Поэтому можно использовать UNION двух вариантов или путь свойства, такой как prov:wasRevisionOf|dcterms:replaces, для соответствия презентациям и 1.x, и 4.0.3 или более поздней.

В определениях продукта, в которых в информации о версии требуется указать конкретный граф, пути свойств, такие как pd:view|^pd:isViewOf, не работают, так как существует два варианта в различных графах. В этом случае необходимо использовать UNION.

При запросе продукта с заголовком, включающим кавычки, амперсанды или символы меньше, эти символы должны быть представлением в кодировке XML в XMLLiteral 4.0.3 или позднее.

Этот запрос выводит продукты, чьи названия содержат символы "auto&boat", предыдущая версия и непосредственные дочерние продукты каждого из них:

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 }
}

Изменение идентификатора для продуктов

dcterms:identifier для продукта - это теперь длинная уникальная строка. По возможности используйте в запросах другое известное свойство. В противном случае измените запросы, использующие dcterms:identifier, для использования нового идентификатора.

Новые свойства размеров для ветвей продуктов

Версия 4.0.3 индексирует данные о свойствах измерений для ветвей продуктов. Например, можно расширить предыдущий запрос для отображения информации об измерении (ветви) для родительского продукта:

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 .
}

Изменения в пользовательских данных

Во всех предыдущих выпусках индекс представлял собой электронный адрес пользователя с неправильной кодировкой URL. Например URI адреса электронной почты mailto:susan@example.com был представлен в индексе как mailto:susan%40example.com. Этот дефект был исправлен в выпуске Jazz 4.0.3, но не был исправлен в выпуске DOORS 9. В результате запросы должны допускать обе формы адреса электронной почты:

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")
}

Комментарии