查询以 SPARQL 查询语言编写。(SPARQL 是用于关联生命周期数据的查询语言。)因此,您必须了解 SPARQL 查询语言才能从头开始创建查询。
下列步骤显示了如何创建和运行 3 个定制查询。对每个查询都添加了注释,以便您可以对其进行定制以供您使用。
以下示例显示了如何查询指定给 Susan 的所有已打开的工程变更请求。
指定给 Susan 的已打开的 ECR
# Name: Open ECRs assigned to Susan
# Description: Show all open ECRs assigned to Susan
# Prefixes used in this query
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX oslc_cm: <http://open-services.net/ns/cm#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?cr ?title ?contrib
WHERE
{
# Find all ECRs - in this example, we find work items of type "Task"; change this to the type of work item you use
?cr rdf:type oslc_cm:ChangeRequest ;
dcterms:type "Task"^^xsd:string ;
dcterms:title ?title ;
dcterms:contributor ?contrib .
# Change the name string to match the user name you want
FILTER regex(str(?contrib),"susan")
# Find open CRs (those with status that is none of closed, fixed, or verified)
# You can adjust this to use any combination of the OSLC CM state predicates
# oslc_cm:closed, oslc_cm:inprogress, oslc_cm:fixed, oslc_cm:approved, oslc_cm:reviewed, and oslc_cm:verified
{
?cr oslc_cm:closed "false"^^xsd:boolean ;
oslc_cm:fixed "false"^^xsd:boolean .
}
# for example, the following alternative to the above clause would find CRs that are either in progress or not closed:
# {
# { ?cr oslc_cm:inprogress "true"^^xsd:boolean } UNION { ?cr oslc_cm:closed "false"^^xsd:boolean }
# }
}
以下示例显示了如何查询失败的测试用例以及指定给我自己的测试用例。
失败的测试
# Name: Failing tests
# Descriptions: Testcases that fail and are assigned to me
# Prefixes used in this query
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX oslc_qm: <http://open-services.net/ns/qm#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?testcase ?title
WHERE
{
# Find failing test results, and their owning testcase
?testResult rdf:type oslc_qm:TestResult ;
oslc_qm:status "com.ibm.rqm.execution.common.state.failed"^^xsd:string ;
oslc_qm:reportsOnTestCase ?testcase .
# Select just the testcases assigned to me
# Change the name string to match the user name you want
?testcase dcterms:contributor ?user.
FILTER regex(str(?user), "tony")
# Find the matching testcase titles
?testcase dcterms:title ?title .
}
以下示例显示了如何查询受变更请求的更改影响的工件。
受 CR 的更改影响的工件
# Description: Find artifacts impacted by a change to a Change Request
# Follows links such as CR->tracks->REQ->[elaboratedBy->REQ | specifiedBy->REQ]->[verifiedBy->TC | elaboratedBy->ME]
# Prefixes used in this query
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX oslc_cm: <http://open-services.net/ns/cm#>
PREFIX oslc_rm: <http://open-services.net/ns/rm#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?cr ?type ?title ?owner
WHERE
{
?cr a oslc_cm:ChangeRequest ;
dcterms:identifier ?id ;
(oslc_cm:tracksRequirement|oslc_rm:trackedBy|oslc_rm:elaboratedBy|oslc_rm:specifiedBy|oslc_rm:validatedBy)* ?uri .
?uri dcterms:title ?title
OPTIONAL
{
?uri rdf:type/rdfs:label ?type ;
}
OPTIONAL
{
# This part of the query picks up user names from either JTS user URIs or from DOORS FOAF entries,
# and avoids getting the DOORS user URI as well as that FOAF entry
{
?uri dcterms:contributor/foaf:name ?owner
}
UNION
{
?uri dcterms:contributor ?owner
FILTER NOT EXISTS { ?owner foaf:name ?x }
}
}
}
# Either provide one or more work item ID numbers here,
# or remove or comment out the entire VALUES section to look at all work items
VALUES ?id
{
"626"^^xsd:string
"627"^^xsd:string
}