This is a raw notes post.. if I get things wrong.. please let me know! As I am consuming the firehose today.
After many network issues here at home, I was able to get to the State of the Platforms keynote. While I had seen little of the hype at the beginning before losing network access.
Package plugins, allows for extending Xcode via Swift. This really seems like a team based development tool. Definitely see ability to help enterprise development teams focus on standardization of code and documentation.
Significant Swift improvements under the hood should make it faster for startup and linking.
SwiftUI abstractions have been improved to create more standard controls and patterns for users. Love the term “Strong Opinions” for SwiftUI. This allows intelligent defaults based on platform.
Enhancements:
Navigation Style API. New Grid API and Customer Layout API. Customer Layout API allows you to reuse your layout logic. Added Tasksheet and ShareSheet (this uses a new transferable approach).
New Frame work: Data visualization via Swift Charts framework. Declarative framework of swiftUI to present information – line, bar, heat maps, and many other types. So out of the box voice over and other accessibility features. Previews are live by default.
Implicit view stack, now you can add “ViewThatFits”.
New NavigationSplitView.
Mac has new MenuBarExtra(API).
Deeper dive on the Lock Screen and API that support it:
WidgetKit have been added to the “All day Lock Screen”. As thought, this is based on the designs from AppleWatch Complications. So we now have:
Circular, Rectangular, Inline, and all widgets work on both iOS and WatchOS – I will look at moving my Apple Watch Complications from Wasted TIme to the iPhone Home Screen.
Additional updates:
Messages Collaborative API – allows for Sharing and works with privacy and security..
You can drag and drop content with sharing so users will be familiar with the UI interactions.
App Intents Framework – makes your apps features available to the system
Today you have to do it manually, but new framework will make it automated.
Expose your shortcuts when people search for your app in Spotlight
This should greatly increase app short cut coverage and discoverability.
There’s a new SiriTip modifier in SwiftUI
Passkeys designed to be easy to use and provide a good transition away from passwords.
websites need to be setup to support Passkey and Password based logins
Uses Public Key Cryptography – only the public key is stored on the server reducing risk to website owners
WebAuthn standard is used by PassKey.
iPadOS:
Find and replace is automatically enabled for your textviews.
DriverKit is now available for iPad, (Same API as on macOS) so this should enable significant updates for hardware connections
CallKit has voice over IP mode. to improve Watch
TvOS 16:
adding connection between iPhone and
added device discovery and connection for you
Phone and iPad
SKAddNetwork – API to improve campaign performance with out tracking users
ScanKit and RoomPlan create USD and USDZ format to improve 3D experiences.
Focus Filters are now enabled on top of App Intents – so app can just show appropriate information based on specific focus modes
Metal updates:
by improving resource loading, app can focus on other activities to improve the gamers experience
Offline Shader compilation allows for improved performance based on combo if Apple Silicon and Metal (the benefit of a closes system)
New Mesh Shader API allows you to optimize the mesh creation and shading to reduce need to access device memory.
MetalFX upscaling – allows you to render the frame at a lower resolution and then allow metal to create temporal upscaling to reduce dropped frames.
MapKit updates:
3D city experience is available to all Apps now.
Allowing for better context and precision so users can show where POIs are in more detail.
You can position cameras in 3D Space, pitch, tilt and more can all be controlled. By default elevation is flattened but you can enable 3D terrain.
Look around uses high res 3D animation.
New – Apple Map Server APIs – restful APIs allows backend services.
Weather App:
now on iPad and Mac
Also available as a Rest API
Native Swift API WeatherKit
APIs are available for you to add to your own app.
Forecasts are 10 days for hour by hour data.
Data is never shared or sold, and adheres to apple’s privacy policies
500k API calls per month free with Developer account
Live Text:
visionKit – two new APIS
Live Text API – allows for text and QR codes in videos and pictures
Data Scanner API – allows for live feed analysis
You need to add your own overlays to tailor to your app
Xcode Cloud:
Announced their pricing. Nice to see that existing developer will get bottom tier for free thru 2023. I’ve been using Xcode Cloud for an app I’ve been playing with and the CI/CD pipeline really works well.
Every year I take an “Education-Vacation” to coincide with WWDC. I was lucky enough back in 2018 and 2019 to actually go to WWDC in person. Over the last few years it has all been virtual.
Mind blown!
At times WWDC has blown my mind like the dragon in my favorite WWDC shirt.
As I get ready to blog about today’s Keynotes, I the excitement is high. I am hoping to see serious updates on SwiftData (?), AR/VR, and macOS. Let the blogging begin!
2022 – Keynote!
Wow the videos of Apple Park are stunning! And here’s Tim!
The new developer center across from Apple Park and Tech Talk for developers. Developer academies to help the next generation – 17 around the world. Nice to see reading out to under represented communities across the globe.
Over to Craig — here we go!
Really nice production value on the graphics! Time for iOS – yup version 16. New personalization features include:
Lock Screen – all new – time based changes,I am betting this are driven by Siri intents, etc.depth effects look cool. Seems like they are taking what they learned from watchOS to iOS. Really nice animation between Lock Screen and Lock Screen.
Notifications now roll in from the bottom, and can be hidden. Later this year, Live Activities API for developers. Tying focus to lock screens allows you to decide what is appropriate – guess more time to setup Focus settings.
Messages will include (Edit messages, Undo Send, and unread marking) nice updates for productivity. Shared with you API will be added.
SharePlay (people are loving? Really? – I never got this working myself). Easier to discover in Facetime – including new app discovery. It will now be available in Messages.
Dictation improvements – fluid movement between typing and voice. (Keyboard stays open). Auto punctuation – also works with sending messages with Siri. There are 15,000 apps that work with Siri.. new APP Intents API – zero setup for short cuts.
Live Text – integrated across the system. This year will add live text to Video – great for copying code samples. Quick actions for Translation. Live Text API available for developers…
Visual Lookup – (introduced last year) touch and hold will allow you take images out of other imagers for copy and paste.
Apple Wallet – select TSA check points will support wallet. Apps will allow for select information to be presented like age verification (old enough not actual age). Keys can be shared from Apps. Working with IETF to address sharing keys across non-apple apps.
Apple Pay – Tap to Pay on iPhone enabled this month, will enable small merchants to support touches pay. Adding Apple Pay Later – into 4 equal payments over 6 weeks with no interest. For developers no changes needed to address Apple Pay Later. Order tracking added into Apple Pay! That’s cool.
Maps – Adding additional eleven countries to new maps experience. Adding improved models to the map look. Multi-stop routing (with up to 15 stops), about time! While driving you can ask Siri to add additional stops to your route. You can also see transit fairs. MapKit updates include –
Look around being added.
Brand new server side APIs
Sports – in Apple News -Live activities on Lock Screen (from Apple TV app). Adding follow your favorite team and leagues: My Sports. It is free in US, UK, Canada and Australia to start with.
Family Sharing updates – Adding new account management tools for kids. Quick setup of other parental controls. Quick start will allow easy setup of new devices. Requests for extension will be done within messages. Family checklist makes it easier to setup
Improved Photo sharing updates for Families. iCloud Shared Photo Library – separate library that everyone can contribute to it. Can set auto sharing when near others in the family.
Privacy updates –
Personal Safety to turn off others access. Safety Check – Working with NNEDV, NCVC, and WESNET to review and reset access granted to others. Also resets privacy permissions to all apps. Restricts messages and FaceTime to the device in hand. This is amazing control given back to survivors of abusive relationships.
HomeKit updates –
Smart home is still in it’s early days (I remember this being said in 1999). Matter standard enables cross platform integration, HomeKit was contributed as a foundation for Matter. Data about how you use your accessories cannot be seen by Apple.
All new Home App – More efficient and relaiable
Redesigned so you can see the whole home in a single view. Multi camera view upfront. Different accessories are more recognizable. New widgets on the Home Screen (iPhone, iPad, and Mac)
Car Play updates –
over 98% of cars in the US. 79% of US buyers only consider a car that have CarPlay. (I can tell you I am one of them).
Larger screens in cars, allows for improved experience. Sneak Peak of next gen CarPlay. This should really give Tesla a run for the new in car Screen!
I wonder how many vehicle manufactures will let Apple take control of their screens like this. Widgets are included too! Very cool. Privacy friendly, on device integration with vehicle canBus. Core of driving experience unique to each driver. Late Next Year 🙁
TrueDepth camera on iPhone can be used to improve your spatial audio profile.
OK now to watchOS:
Most loved watch in the world:
Adding 4 new watch faces.
New notifications and pinning most used apps.
Developers new share sheet and photo pickers API
Now to keep you active on the watchOS
Running updates to show metrics to better understand your performance.
Three new running form metrics:
Vertical oscillation
Stride length
Ground contact time
Workout views to show more information
including heart rate zones.
adding alerts to keep your heart rate in the right zone
New multi-sport workout type for Triathletes – auto switched between swimming, running, and biking
Fitness app will also be available for all iPhones without a watch.
Now to keep you healthy in watchOS
Sleep App – will now try to discover which stage of sleep you are in.
Heart heart help – adding support once you are diagnosed with Afib. History in health app will also help you share a PDF with your Dr. to help address long term information. FDA clearance expected “Soon”.
Medication tracking being added to watchOS app. Meds, Vitamin, and supplements with reminders. You can use iPhone camera to track your medications.
Drug drug interactions will show alerts with you add a new medication. Will allow you to share your health data with family members.
Privacy with watchOS
encrypted on device
not shared with out explicit permission
reminders periodically of what you are sharing and with who.
macOS updates
M2 introduction still 5nanometer. But 50% better bandwidth. 24GB unified memory, 8 core CPU, 18% increase in overall performance as M1. M2 10Core machine will drive 25% higher graphics at the same power level as M1. Next generation Secure Enclave and Neural engine, and media engines.
Announcing new MacBook Air with M2 chip. The Worlds Best Selling Laptop. Completely redesigned around M2. Colors and MagSafe. From the side it looks like an iPad to me. 11.3mm thick and 2.7 lbs. Silver, space gray, starlight and midnight. with two additional thunderbolt ports and high impedance headphone jack. (13.6 inch display). with 1 Billion color liquid retina display. 1080p camera with 2x resolution as previous. Audio speaker and three microphone array at the top of the device. Full height function keys. 18 hours of video playback and new charging adapter. Also support fast change for the first time. (50% in 30 minutes of charging)
Adding M2 to 13inch MacBook Pro – adds cooling vs. silent Air. 20 hours of video playback.
Basically $100 more for Pro, and M1 version stays in line up for $999. M2 Air $1199 and $1299 for Pro.
macOS Ventura –
New – Stage Manager – improved task switch and window manager.
app grouping allows your pair windows for a specific task.
accessing desktop files seems like an easy approach.
SpotLight –
Tap on spacebar allows for quick look.
you can search text in images with live text.
Richer full window results (also coming to iOS and iPadOS)
Mail updates –
Undo Send (for a few minutes)
Schedule Sent
Follow-up Seggestions
Remind Me to come back to a message
Search – biggest overhaul – you can see recently share docs and links, instant suggestions (with typo improvements)
Safari –
More support for standards
Adding Shared Tab Groups, allows you to share in one place. Can see realtime who is reviewing
Adding improved safety by supporting the new Passkeys approach using biometrics and digital keys. Can’t be phished or leaked. It is all on device. Synced across apple devices on Mac, Apple TV, iPhone and iPad . This is part of the Fido Alliance work.
Gaming –
Metal Updates:
New features include: Affects Upscaling (based on smaller less compute intensive fames, and then upscaling), and game loading via Fast Resource loading API.
Village Resident Evil from Capcom – technical demo – available later this year.
Continuity –
extending to FaceTime allowing you to hand off between Mac and iPhone.
Continuity Camera – you can use your iPhone as your webcam. Guess we have a new Apple stand to attach phone to your laptop. this will also support center stage and portrait mode. Studio light allows you to improve tough lighting conditions. Desk view allows your share desk so you can see peoples hands, etc.
Will also work with Zoom, Teams, WebEx and more.
iPadOS!
Big release – everything you heard about earlier in macOS and iOS
Weather comes to iPad (about time).
And new features for pro users:
Collaboration –
instance collaboration across the system via share screen
get notifications of missed changes back in the messages application.
New API to integration collaboration in their apps, also coming to iOS and macOS
New brainstorming app – Free Form – coming later this year. this provides a space for group sessions, project planning, etc. Looks like a giant whiteboard. With live cursors. Will definitely take on Mural and other apps. Kinda like a GIANT One Note share app
Gaming –
Call out to Divinity Original Sin Two
Metal 3
background download API
Game Center will bring activities to dashboard
SharePlay in gaming will allow you to join people into your game. (some time later this year)
Desktop class Apps
across the board updates to add Mac features on to iPadOS
Files major updates
System wife features – redesigned find and replace
Document menu to reveal common actions
Customizable toolbars in iPadOS
New APIs to build these in to your own apps.
Reference Color – allows you to use the iPad Pro 12.9 inch to address reference colors (for media experts) to provide consistent workflow across devices.
Display Scaling setting!! To view more of your apps.
stage Manager is coming to iPadOS to dramatically improve multi-tasking with full external display support on iPad!!!
I guess we now know why the Monitor has what it does. Can’t wait to test things out today (and this summer).
I’m really excited to announce I will presenting at the upcoming IBM Engineering Lifecycle Management User Group Virtual Conference. During the session will be taking customers and partners thru the OSLC based API discovery process, including creating the ETM Test Plan.
I will be taking questions and showing demos, so sign up! See you then!
Wow! I’ve been using swift for a bunch of years, and have never come across enum associations. Imaging getting to that on day two of a course.
import UIKit
enum Activity {
case bored
case running(destination: String)
case talking(topic: String)
case singing(volume: Int)
}
let talking = Activity.talking(topic: "football")
What you see above is the association added to the running, talking and singing values of the enum Activity. This way you can “associate” additional information to a specific enum, making it much more meaningful. Very cool.
Today I am going to try and start the 100 days of swift program that Paul Hudson provides. I’ve been using Swift for years, and taken a ton of individual classes, read books, and even published a few apps on the App Store. However, I find I still find some things just don’t work like I expect.
I believe this is due to my haphazard approach to learning the language. The biggest challenge is making time every day to do this.
In my prior posts I took you through the discovery flow to identify the resource shape of creating a new Project Area. The only problem was, there is no public API for creating a Project Area, either via OSLC or published ELM APIs. To that end, you may have been a bit frustrated that all that knowledge ended with a bit of thud.
Let’s rectify that, by building a testing process via IBM ETM and it’s exposed OSLC based APIs. As you can see in the diagram above, a lot of what you have already learned will be applicable. There will be a few minor differences:
We will be accessing the QM application. We will be looking for qm#TestPlan in our Project Area’s services catalog
We can take this same pattern for many other OSLC based creation APIs, so I will go thru it in more detail this time. As before we will be using our locally setup server, on my machine it is https://elmwb.com on port 9443, so to get to our RootServices we will start at https://elmwb.com:9443/qm/rootservices
RootServices
As we did previously, our first call is to query the root services API for the appropriate application server. We are going to look at the Engineering Test Management (qm) based services in the root services document. There are many namespaces, but let’s look at the following – oslc_(multiple), qm_rqm, and rqm:
<https://elmwb.com:9443/qm/rootservices>
qm_rqm:trackedResourceSetProvider
[ a trs2:TrackedResourceSet ;
oslc:domain oslc_config: ;
trs2:trackedResourceSet
<https://elmwb.com:9443/qm/trs2> ;
dc:description "IBM Engineering Test Management (QM) resources, including test plans, cases, scripts, and results."@en ;
dc:title "ETM Resources (TRS 2.0)"@en ;
dc:type <http://open-services.net/ns/qm#>
] ;
qm_rqm:trackedResourceSetProvider
[ a trs2:TrackedResourceSet ;
trs2:trackedResourceSet
<https://elmwb.com:9443/qm/process-trs2> ;
dc:description "IBM Engineering Test Management (QM) process resources, including project areas, team areas, timelines, and iterations."@en ;
dc:title "ETM Process Resources (TRS 2.0)"@en ;
dc:type <http://jazz.net/ns/process#>
] ;
rqm:majorVersion "7" ;
rqm:version "7.0.2" ;
oslc_auto:autoServiceProviders
<https://elmwb.com:9443/qm/oslc_auto_test/catalog> ;
oslc_config:cmServiceProviders
<https://elmwb.com:9443/qm/oslc_config/catalog> ;
oslc:publisher <https://elmwb.com:9443/qm/application-about> ;
oslc_qm:qmServiceProviders
<https://elmwb.com:9443/qm/oslc_qm/catalog> ;
dc:title "Quality Management"@en .
As you can see above there are 6 root services:
Tracked Resources Set Provider for test plans, cases, scripts and results
Tracked Resources Set Provider for test process resources: project areas, teams, areas, timelines, and iterations
OSLC Auto Service Providers
OSLC Configuration Management Service Providers
OSLC Publisher
OSLC QM Service Providers
I’ll be focusing on our OSLC QM Service Providers since we want to be able to setup automated testing.
OSLC QM Service Providers
The QM (Quality Management) Service Providers API exposes those services for IBM Engineering Test Management, they support the process of testing with Test Plans, Test Case, etc. On my server, and based on the above RootServices document we see that the API is defined as:
Please note, I have removed the authentication information from the GET Url, as it will be different based on the authentication method you choose (OAuth1.0a or OIDC). As in my prior discovery blog post, we want to identify the services.xml that contains the APIs for our chosen Project Area. In our above rdf+xml it can be found at the path: <rdf:RDF><oslc:ServiceProviderCatalog><oslc:serviceProvider rdf:about=> . I’ve highlighted the services end point in bold above – https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/services.xml.
This end point will now allow us to look at the automation Services supported by “JKE Banking (Quality Management)”.
QM Service Provider
Now that we have found the QM Service Provider for the “JKE Banking (Quality Management)” project area, we can identify the various Creation Factories and Query Capabilities. Both of these services will provide both a Resource Shape and an endpoint to use for creating the object. For Creation Factories we are looking for “oslc:creation”; while for Query Capabilities we look for “oslc:queryBase”.
The API for Automation Service Provider is defined as:
GET Access Service Provider
IBM Engineering Test Management A Project Area’s Service Providers.
Authorization OAuth 1.0
Consumer Key consumerkey
Consumer Secret consumerSecret
Token
Token Secret
Request Headers
Accept application/rdf+xml
OSLC-Core-Version 2.0
Content-Type application/xml
Accept text/turtle
Example
Request cURL
curl --location --request GET ‘https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/services.xml' \
--header 'Accept: application/rdf+xml' \
--header 'OSLC-Core-Version: 2.0' \
--header 'Content-Type: application/xml’
Please note, I have removed the authentication information from the GET Url, as it will be different based on the authentication method you choose (OAuth1.0a or OIDC).
If we look at , we will find the following Creation Factory for our Test Plan:
This is exactly what we are looking for. As I mentioned above, there are two items we are looking for:
oslc:resourceShape
oslc:creation
These two elements provide us with the two endpoints we need to create a new Test Plan. The Resource Shape will let us know what data we need to provide for creating a new Test Plan; while the Creation Factory provides us with the end point to actually create it.
We begin with our GET to the oslc:resourceShape using the same headers and authentication from the Service Provider API, to help reduce the length of this article I am not going to repeat that here. The point is, we are using these same values for all our APIs unless I specifically call it out.
The first thing you may notice in the returned Resource Shape is that it contains many xml:lang tags. This allows for many of the elements to provide titles in various languages. To shorten this post, I will remove all but xml:lang=“en”.
There are two types entries in this resource shape, the base object and node entries. The nodes actually are the details for each of the properties required when creating the base object. In our case the base object is our Test Plan. We see that defined here:
As we see there are 27 properties required to create a Test Plan and I plan to go thru them one by one. After this is complete we should have what we need to define the body of the Creation Factory.
Please note that the Node numbers may vary and are only used to identify information in the resource shape.
There is a bunch of information in this definition, we will see similar properties for each node. Those properties in the dcterms name space are descriptive, so I will not focus on them. I have removed all of the various language values for jrs:inversePropertyLabel, dcterms:description and dcterms:title.
If we look at the <rdf:type> we see that our node A0 is defined as a core#Property. We know this will be a property of our Test Plan. The title and description is defined in dcterms: title = “Formal Review” and description = “The formal review records of the resource.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:valueShape
This will point to a resource shape for the value, as defined in the oslc:valueType
Indicates the resource of property should not be displayed to users.
FALSE
This table tells us a lot about A0. Ultimately we see that it occurs Zero-or-many, meaning this an optional value, that may have more than one value. The values are defined as AnyResource, whose name (or identifier) is formalReview. The values are stored “inline” in the format of a QualityApproval resource shape. We also see that the client can update the value, and its value can be displayed to users of the system.
Therefore, we will include <oslc:formalReview/> in the body of our test plan creation factory post.
Node a1 – has child plan
Here’s the details of the node:
<rdf:Description rdf:nodeID="A1">
<oslc:valueType rdf:resource="http://open-services.net/ns/core#Resource"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">hasChildPlan</oslc:name>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<jrs:inversePropertyLabel rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Parent Plan</jrs:inversePropertyLabel>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Reference"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:range rdf:resource="http://open-services.net/ns/qm#TestPlan"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The child test plan of the Test Plan.</dcterms:description>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Has Child Plan</dcterms:title>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:valueShape rdf:resource="https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/shape/resource/com.ibm.rqm.planning.VersionedTestPlan"/>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#hasChildPlan"/>
</rdf:Description>
The title and description is defined in dcterms:title = “Has Child Plan” and description = “The child test plan of the Test Plan.” We also see our first occurrence of a <jrs:inversePropertyLabel> with a value of “Parent”. This implies that a Child Plan which points to this Test Plan, will identify this plan as its “Parent” plan.
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Indicates the resource of property should not be displayed to users.
FALSE
We see that it occurs Zero-or-many, meaning this an optional value, that may have more than one value. The values are defined as Resource, whose name (or identifier) is hasChildPlan. We also see that the client can update the value, and its value can be displayed to users of the system.
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:hasChildPlan/> in the body of our test plan creation factory post.
The title and description is defined in dcterms: title = “Category” and description = “The category title and subject for the resource.”
We see our first appearance of “oslc”allowedValue”, this is providing a link to the categories defined for this project area on your server. On my server there are 12 unique values for Category as defined in this resource shape. If I were to perform the following GET:
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:category/> in the body of our test plan creation factory post.
The title and description is defined in dcterms:title = “Has Priority” and description = “The priority of the resource.” The “oslc” allowedValue” appears again, providing links to valid priorities on this server, you can use a GET on the resource if you want to know the values.
The rest of the values are values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:name
The local name of the defined property.
hasPriority
oslc:isMemberProperty
If true then the described resource is a container and the defined property is used for container membership.
FALSE
oslc:occurs
The number of times the defined property may occur. Values are defined in oslc:Cardinality.
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:hidden
Indicates the resource of property should not be displayed to users.
FALSE
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:hasPriority/> in the body of our test plan creation factory post.
Node A21 – Title
Here’s the details of the node:
<rdf:Description rdf:nodeID="A21">
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Exactly-one"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:valueType rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"/>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">title</oslc:name>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Title (reference: Dublin Core) of the resource represented as rich text in XHTML content. SHOULD include only content that is valid inside an XHTML <span> element.</dcterms:description>
<oslc:propertyDefinition rdf:resource="http://purl.org/dc/terms/title"/>
</rdf:Description>
The description is defined in dcterms:description = “Title (reference: Dublin Core) of the resource represented as rich text in XHTML content. SHOULD include only content that is valid inside an XHTML <span> element.” The comment about (reference: Dublin Core) is key here, as our Response body will contain a <dcterms:title> instead of <oslc:title> .
The rest of the values are <oslc> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:occurs
The number of times the defined property may occur. Values are defined in oslc:Cardinality. Exactly-one tells us this is Mandatory.
We have found our first mandatory property for creating a test plan. In our case we will use the following entry in our Response Body: <dcterms:title>Test plan created from API</dcterms:title>. Remember, the dcterms:description let us know we should use dcterms instead of oslc in our name space.
Node a24 – contributor
Here’s the details of the node:
<rdf:Description rdf:nodeID="A24">
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">contributor</oslc:name>
<oslc:range rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Contributor</dcterms:title>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#AnyResource"/>
<oslc:propertyDefinition rdf:resource="http://purl.org/dc/terms/contributor"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Either"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Contributor or contributors to resource (reference: Dublin Core). It is likely that the target resource will be an foaf:Person but that is not necessarily the case.</dcterms:description>
<oslc:valueShape rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
The title and description is defined in dcterms: title = “Contributor” and description = “Contributor or contributors to resource (reference: Dublin Core). It is likely that the target resource will be an foaf:Person but that is not necessarily the case.” If you are not familiar with the acronym “foaf” – it stands for Friend of A Friend – you can read more about it here – https://en.wikipedia.org/wiki/FOAF_(ontology).
The rest of the values are values <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Given that this is optional, we will not provide any value in our simple POST body. We will include <foaf:contributor/> in the body of our test plan creation factory post.
Node a31 – template
Here’s the details of the node:
<rdf:Description rdf:nodeID="A31">
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#AnyResource"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">template</oslc:name>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Reference"/>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Template</dcterms:title>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#template"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The artifact template used to specify the sections in the Test Plan.</dcterms:description>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
</rdf:Description>
The title and description is defined in dcterms: title = “Template” and description = “The artifact template used to specify the sections in the Test Plan.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
Indicates the resource of property should not be displayed to users.
FALSE
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:template/> in the body of our test plan creation factory post.
Node a32 – related change request
Here’s the details of the node:
<rdf:Description rdf:nodeID="A32">
<jrs:inversePropertyLabel rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Related Test Plan</jrs:inversePropertyLabel>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:range rdf:resource="http://open-services.net/ns/cm#ChangeRequest"/>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Reference"/>
<oslc:propertyDefinition rdf:resource="http://open-services.net/ns/qm#relatedChangeRequest"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:valueShape rdf:resource="http://open-services.net/ns/cm#ChangeRequest"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#Resource"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">A related change request. It is likely that the target resource will be an oslc_cm:ChangeRequest but that is not necessarily the case.</dcterms:description>
Label>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Related Change Request</dcterms:title>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">relatedChangeRequest</oslc:name>
</rdf:Description>
The title and description is defined in dcterms: title = “Related Change Request” and description = “A related change request. It is likely that the target resource will be an oslc_cm:ChangeRequest but that is not necessarily the case.” The describes that a related Change Request which points to this Test Plan, will identify this plan as its “Related Test Plan”.
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:range
The value of the applicable property is constrained to be of type Change Request.
http://open-services.net/ns/cm#ChangeRequest
oslc:occurs
The number of times the defined property may occur. Values are defined in oslc:Cardinality.
Indicates the resource of property should not be displayed to users.
FALSE
oslc:name
The local name of the defined property.
relatedChangeRequest
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:relatedChangeRequest/> in the body of our test plan creation factory post.
Node a35 – iteration
Here’s the details of the node:
<rdf:Description rdf:nodeID="A35">
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Iteration</dcterms:title>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/process#iteration"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The development iteration associated with the Test Plan.</dcterms:description>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/>
<oslc:valueShape rdf:resource="http://jazz.net/ns/process/shapes/Iteration"/>
<oslc:range rdf:resource="http://jazz.net/ns/process#Iteration"/>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Reference"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#Resource"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">iteration</oslc:name>
</rdf:Description>
The title and description is defined in dcterms: title = “iteration” and description = “Iteration.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:propertyDefinition
The formal review records of the resource.
http://jazz.net/ns/process#iteration
oslc:hidden
Indicates the resource of property should not be displayed to users.
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:iteration/> in the body of our test plan creation factory post.
node a39 – test schedule
Here’s the details of the node:
<rdf:Description rdf:nodeID="A39">
<oslc:valueShape rdf:resource="https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/shape/resource/com.ibm.rqm.planning.VersionedTestPlan#TestPhase"/>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Inline"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#testSchedule"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">testSchedule</oslc:name>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The test schedule of the Test Plan.</dcterms:description>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Test Schedule</dcterms:title>
<oslc:range rdf:resource="http://jazz.net/ns/qm/rqm#TestPhase"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#AnyResource"/>
</rdf:Description>
The title and description is defined in dcterms: title = “Test Schedule” and description = “The test schedule of the Test Plan.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:valueShape
This will point to a resource shape for the value, as defined in the oslc:valueType
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:testSchedule/> in the body of our test plan creation factory post.
node a41 – team area
Here’s the details of the node:
<rdf:Description rdf:nodeID="A41">
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/process#teamArea"/>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Reference"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#Resource"/>
<oslc:range rdf:resource="http://jazz.net/ns/process#TeamArea"/>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:valueShape rdf:resource="http://jazz.net/ns/process/shapes/TeamArea"/>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Team Area</dcterms:title>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">teamArea</oslc:name>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The team area that is responsible for the resource.</dcterms:description>
</rdf:Description>
The title and description is defined in dcterms: title = “Team Area” and description = “The team area that is responsible for the resource.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:propertyDefinition
The Team Area responsible for the resource.
http://jazz.net/ns/process#teamArea
oslc:representation
The representation of the object resource must be present in the representation of the described resource.
http://open-services.net/ns/core#Reference
oslc:isMemberProperty
If true then the described resource is a container and the defined property is used for container membership.
FALSE
oslc:hidden
Indicates the resource of property should not be displayed to users.
The value of the applicable property is constrained to be of type Team Area.
http://jazz.net/ns/process#TeamArea
oslc:valueShape
This will point to a resource shape for the value, as defined in the oslc:valueType
http://jazz.net/ns/process/shapes/TeamArea
oslc:occurs
Optional, single value
http://open-services.net/ns/core#Zero-or-one
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:name
The local name of the defined property.
teamArea
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:teamArea/>in the body of our test plan creation factory post.
The title and description is defined in dcterms: title = “Has Workflow State” and description = “The current workflow state of the resource.” We see this resource shape has both a oslc:defaultValue, and a set of oslc:allowedValues. The oslc:defaultValue matches one of the many oslc:allowedValues.
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:range
The value of the applicable property is constrained to be of type Workflow State.
Indicates the resource of property should not be displayed to users.
FALSE
oslc:occurs
Optional, single value
http://open-services.net/ns/core#Zero-or-one
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:hasWorkflowState/> in the body of our test plan creation factory post.
node a53 – Runs on test environment
Here’s the details of the node:
<rdf:Description rdf:nodeID="A53">
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">runsOnTestEnvironment</oslc:name>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Runs on Test Environment</dcterms:title>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:propertyDefinition rdf:resource="http://open-services.net/ns/qm#runsOnTestEnvironment"/>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Reference"/>
<oslc:range rdf:resource="http://jazz.net/ns/qm/rqm#TestEnvironment"/>
<oslc:valueShape rdf:resource="https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/shape/resource/com.ibm.rational.test.lm.AssetConfiguration"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#Resource"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The test environment that the Test Plan will be run on.</dcterms:description>
</rdf:Description>
The title and description is defined in dcterms: title = “Runs on Test Environment” and description = “The test environment that the Test Plan will be run on.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:occurs
The number of times the defined property may occur. Values are defined in oslc:Cardinality.
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:runsOnTestEnvironment/> in the body of our test plan creation factory post.
Node a54 – uses test case
Here’s the details of the node:
<rdf:Description rdf:nodeID="A54">
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">usesTestCase</oslc:name>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Either"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<oslc:propertyDefinition rdf:resource="http://open-services.net/ns/qm#usesTestCase"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Test Case used by the Test Plan. It is likely that the target resource will be an oslc_qm:TestCase but that is not necessarily the case.</dcterms:description>
<jrs:inversePropertyLabel rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Used By</jrs:inversePropertyLabel>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:range rdf:resource="http://open-services.net/ns/qm#TestCase"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Uses Test Case</dcterms:title>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#Resource"/>
<oslc:valueShape rdf:resource="https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/shape/resource/com.ibm.rqm.planning.VersionedTestCase"/>
</rdf:Description>
The title and description is defined in dcterms: title = “Uses Test Case” and description = “Test Case used by the Test Plan. It is likely that the target resource will be an oslc_qm:TestCase but that is not necessarily the case.” We also see with a value of “Used By”. This implies that a test case which points to this Test Plan, will identify it is “Used By” this plan.
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:name
The local name of the defined property.
usesTestCase
oslc:hidden
Indicates the resource of property should not be displayed to users.
FALSE
oslc:representation
The representation of the object resource must be present in the representation of the described resource.
http://open-services.net/ns/core#Either
oslc:isMemberProperty
If true then the described resource is a container and the defined property is used for container membership.
FALSE
oslc:occurs
The number of times the defined property may occur. Values are defined in oslc:Cardinality.
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:usesTestCase/> in the body of our test plan creation factory post.
node a68 – key date
Here’s the details of the node:
<rdf:Description rdf:nodeID="A68">
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Key Date</dcterms:title>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The key date of the Test Plan.</dcterms:description>
<oslc:range rdf:resource="http://jazz.net/ns/qm/rqm#KeyDate"/>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#keyDate"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">keyDate</oslc:name>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#AnyResource"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:valueShape rdf:resource="https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/shape/resource/com.ibm.rqm.planning.VersionedTestPlan#KeyDate"/>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Inline"/>
</rdf:Description>
The title and description is defined in dcterms: title = “Key Date” and description = “The key date of the Test Plan.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:range
The value of the applicable property is constrained to be of type QM Key Date.
http://jazz.net/ns/qm/rqm#KeyDate
oslc:hidden
Indicates the resource of property should not be displayed to users.
The representation of the object resource must be present in the representation of the described resource.
http://open-services.net/ns/core#Inline
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:keyDate/> in the body of our test plan creation factory post.
node a70 – tests development plan
Here’s the details of the node:
<rdf:Description rdf:nodeID="A70">
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Tests Development Plan</dcterms:title>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:propertyDefinition rdf:resource="http://jazz.net/xmlns/prod/jazz/calm/1.0/testsDevelopmentPlan"/>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Reference"/>
<oslc:range rdf:resource="http://open-services.net/ns/cm-x#Plan"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#Resource"/>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">testsDevelopmentPlan</oslc:name>
<oslc:valueShape rdf:resource="http://open-services.net/ns/cm-x#Plan"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Development Plan tested by the Test Plan.</dcterms:description>
</rdf:Description>
The title and description is defined in dcterms: title = “Tests Development Plans” and description = “Development Plan tested by the Test Plan.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:testsDevelopmentPlan/> in the body of our test plan creation factory post.
node a71 – attachment
Here’s the details of the node:
<rdf:Description rdf:nodeID="A71">
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The file that has been attached to the Test Plan.</dcterms:description>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Attachment</dcterms:title>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Reference"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#AnyResource"/>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#attachment"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">attachment</oslc:name>
</rdf:Description>
The title and description is defined in dcterms: title = “Attachment” and description = “The file that has been attached to the Test Plan.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:hidden
Indicates the resource of property should not be displayed to users.
FALSE
oslc:occurs
The number of times the defined property may occur. Values are defined in oslc:Cardinality.
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:attachment/> in the body of our test plan creation factory post.
node a73 – objective status group
Here’s the details of the node:
<rdf:Description rdf:nodeID="A73">
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#objectiveStatusGroup"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Objective Status Group</dcterms:title>
<oslc:valueShape rdf:resource="https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/shape/resource/com.ibm.rqm.planning.VersionedTestPlan#ObjectiveStatusGroup"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#AnyResource"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">objectiveStatusGroup</oslc:name>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Inline"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The objective status group of the Test Plan.</dcterms:description>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:range rdf:resource="http://jazz.net/ns/qm/rqm#ObjectiveStatusGroup"/>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
</rdf:Description>
The title and description is defined in dcterms: title = “Objective Status Group” and description = “The objective status group of the Test Plan.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:propertyDefinition
A Jazz QM object Status Group
http://jazz.net/ns/qm/rqm#objectiveStatusGroup
oslc:valueShape
This will point to a resource shape for the value, as defined in the oslc:valueType
Given that this is optional, we will not provide any value in our simple POST body. We will include <rqm_qm:objectiveStatusGroup/> in the body of our test plan creation factory post.
node A80 – risk
Here’s the details of the node:
<rdf:Description rdf:nodeID="A80">
<oslc:valueType rdf:resource="http://open-services.net/ns/core#AnyResource"/>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Risk</dcterms:title>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:range rdf:resource="http://jazz.net/ns/qm/rqm#Risk"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">risk</oslc:name>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<oslc:valueShape rdf:resource="https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/shape/resource/com.ibm.rqm.planning.VersionedTestPlan#Risk"/>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Inline"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#risk"/>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">A measurement of the risk associated with a planning effort for the resource.</dcterms:description>
</rdf:Description>
The title and description is defined in dcterms: title = “Risk” and description = “A measurement of the risk associated with a planning effort for the resource.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:valueType
A URI Reference representation to a resource.
http://open-services.net/ns/core#AnyResource
oslc:hidden
Indicates the resource of property should not be displayed to users.
FALSE
oslc:isMemberProperty
If true then the described resource is a container and the defined property is used for container membership.
FALSE
oslc:range
The value of the applicable property is constrained to be of type Risk.
http://jazz.net/ns/qm/rqm#Risk
oslc:name
The local name of the defined property.
risk
oslc:occurs
The number of times the defined property may occur. Values are defined in oslc:Cardinality.
The representation of the object resource must be present in the representation of the described resource.
http://open-services.net/ns/core#Inline
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:propertyDefinition
A Jazz QM risk.
http://jazz.net/ns/qm/rqm#risk
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:risk/> in the body of our test plan creation factory post.
node a82 – contains test suite
Here’s the details of the node:
<rdf:Description rdf:nodeID="A82">
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Either"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:range rdf:resource="http://jazz.net/ns/qm/rqm#TestSuite"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#Resource"/>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#containsTestSuite"/>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The test suite associated with the Test Plan.</dcterms:description>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Contains Test Suite</dcterms:title>
<oslc:valueShape rdf:resource="https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/shape/resource/com.ibm.rqm.planning.VersionedTestSuite"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">containsTestSuite</oslc:name>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
</rdf:Description>
The title and description is defined in dcterms: title = “Contains Test Suite” and description = “The test suite associated with the Test Plan.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:representation
The representation of the object resource must be present in the representation of the described resource.
http://open-services.net/ns/core#Either
oslc:isMemberProperty
If true then the described resource is a container and the defined property is used for container membership.
FALSE
oslc:range
The value of the applicable property is constrained to be of type Test Suite.
Given that this is optional, we will not provide any value in our simple POST body. We will include <rqm_qm:containsTestSuite/> in the body of our test plan creation factory post.
node a84 – execution effort
Here’s the details of the node:
<rdf:Description rdf:nodeID="A84">
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">executionEffort</oslc:name>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/>
<oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#executionEffort"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Execution Effort</dcterms:title>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The execution effort that the Test Plan defined in person hour.</dcterms:description>
</rdf:Description>
The title and description is defined in dcterms: title = “Execution Effort” and description = “The execution effort that the Test Plan defined in person hour.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:isMemberProperty
If true then the described resource is a container and the defined property is used for container membership.
FALSE
oslc:hidden
Indicates the resource of property should not be displayed to users.
FALSE
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:name
The local name of the defined property.
executionEffort
oslc:occurs
An optional, single value
http://open-services.net/ns/core#Zero-or-one
oslc:valueType
A URI Reference representation to a resource.
http://www.w3.org/2001/XMLSchema#float
oslc:propertyDefinition
The formal review records of the resource.
http://jazz.net/ns/qm/rqm#executionEffort
Given that this is optional, and we see it is defined as a float, we provide a value of 42.0 in our simple POST body. We will include <rqm_qm:executionEffort>42.0</rqm_qm:executionEffort>in the body of our test plan creation factory post.
node a90 – category:release
Here’s the details of the node:
<rdf:Description rdf:nodeID="A90">
<oslc:range rdf:resource="http://jazz.net/ns/qm/rqm#CategoryResource"/>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:valueShape rdf:resource="https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/shape/resource/com.ibm.rqm.planning.VersionedTestPlan#CategoryResource"/>
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqm:category:_PMObVokaEeynq4H4YH03kw#"/>
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqm:category:_PMQ3l4kaEeynq4H4YH03kw#"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Category: Release</dcterms:title>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">category_PML_F4kaEeynq4H4YH03kw</oslc:name>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Defines an enumeration value associated with a test artifact.</dcterms:description>
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqm:category:_PMQQgIkaEeynq4H4YH03kw#"/>
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqm:category:_PMMmJ4kaEeynq4H4YH03kw#"/>
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqm:category:_PMPCZokaEeynq4H4YH03kw#"/>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Inline"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqm:category:_PMQQiIkaEeynq4H4YH03kw#"/>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#category_PML_F4kaEeynq4H4YH03kw"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#AnyResource"/>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
</rdf:Description>
The title and description is defined in dcterms: title = “Category: Release” and description = “Defines an enumeration value associated with a test artifact.” This shape also includes an enumeration of the allowed values in the <oslc:allowedValue> tags.
The rest of the values are values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:range
The value of the applicable property is constrained to be of type Category Resource.
http://jazz.net/ns/qm/rqm#CategoryResource
oslc:hidden
Indicates the resource of property should not be displayed to users.
FALSE
oslc:valueShape
This will point to a resource shape for the value, as defined in the oslc:valueType
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:category_PML_F4kaEeynq4H4YH03kw/> in the body of our test plan creation factory post.
node a117 – category: test phase
Here’s the details of the node:
<rdf:Description rdf:nodeID="A117">
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqmy:category:_PMUh8IkaEeynq4H4YH03kw#"/>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Inline"/>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">category_PMRep4kaEeynq4H4YH03kw</oslc:name>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqm:category:_PMSFtokaEeynq4H4YH03kw#"/>
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqm:category:_PMVwEIkaEeynq4H4YH03kw#"/>
<oslc:range rdf:resource="http://jazz.net/ns/qm/rqm#CategoryResource"/>
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqm:category:_PMSsxokaEeynq4H4YH03kw#"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Category: Test Phase</dcterms:title>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:valueShape rdf:resource="https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/shape/resource/com.ibm.rqm.planning.VersionedTestPlan#CategoryResource"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#AnyResource"/>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#category_PMRep4kaEeynq4H4YH03kw"/>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Defines an enumeration value associated with a test artifact.</dcterms:description>
</rdf:Description>
The title and description is defined in dcterms: title = “Category: Test Phase” and description = “Defines an enumeration value associated with a test artifact.” This shape also includes an enumeration of the allowed values in the <oslc:allowedValue> tags.
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:representation
The representation of the object resource must be present in the representation of the described resource.
http://open-services.net/ns/core#Inline
oslc:name
The local name of the defined property.
category_PMRep4kaEeynq4H4YH03kw
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:range
The value of the applicable property is constrained to be of type Jazz QM Category Resource.
http://jazz.net/ns/qm/rqm#CategoryResource
oslc:hidden
Indicates the resource of property should not be displayed to users.
FALSE
oslc:isMemberProperty
If true then the described resource is a container and the defined property is used for container membership.
FALSE
oslc:valueShape
This will point to a resource shape for the value, as defined in the oslc:valueType
Given that this is optional, we will not provide any value in our simple POST body. We will include <rqm_qm:category_PMRep4kaEeynq4H4YH03kw/> in the body of our test plan creation factory post.
noe a136 – category:product
Here’s the details of the node:
<rdf:Description rdf:nodeID="A136">
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Category: Product</dcterms:title>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Inline"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">category_PL_KwIkaEeynq4H4YH03kw</oslc:name>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:valueShape rdf:resource="https://elmwb.com:9443/qm/oslc_qm/contexts/_OIbcAIkaEeynq4H4YH03kw/shape/resource/com.ibm.rqm.planning.VersionedTestPlan#CategoryResource"/>
<oslc:range rdf:resource="http://jazz.net/ns/qm/rqm#CategoryResource"/>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqm:category:_PMLYBokaEeynq4H4YH03kw#"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:allowedValue rdf:resource="https://elmwb.com:9443/qm/service/com.ibm.rqm.integration.service.IIntegrationService/resources/JKE+Banking+%28Quality+Management%29/category/urn:com.ibm.rqm:category:_PMFRYIkaEeynq4H4YH03kw#"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#AnyResource"/>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#category_PL_KwIkaEeynq4H4YH03kw"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Defines an enumeration value associated with a test artifact.</dcterms:description>
</rdf:Description>
The title and description is defined in dcterms: title = “Category: Product” and description = “Defines an enumeration value associated with a test artifact.” This shape also includes an enumeration of the allowed values in the tags.
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:representation
The representation of the object resource must be present in the representation of the described resource.
http://open-services.net/ns/core#Inline
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:name
The local name of the defined property.
category_PL_KwIkaEeynq4H4YH03kw
oslc:valueShape
This will point to a resource shape for the value, as defined in the oslc:valueType
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc:category_PL_KwIkaEeynq4H4YH03kw/> in the body of our test plan creation factory post.
node a139 – validates requirements collection
Here’s the details of the node:
<rdf:Description rdf:nodeID="A139">
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-many"/>
<oslc:representation rdf:resource="http://open-services.net/ns/core#Reference"/>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Requirement Collection that is validated by the Test Plan. It is likely that the target resource will be an oslc_rm:RequirementCollection but that is not necessarily the case.</dcterms:description>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">validatesRequirementCollection</oslc:name>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:valueShape rdf:resource="http://open-services.net/ns/rm#RequirementCollection"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Validates Requirement Collection</dcterms:title>
<oslc:propertyDefinition rdf:resource="http://open-services.net/ns/qm#validatesRequirementCollection"/>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:range rdf:resource="http://open-services.net/ns/rm#RequirementCollection"/>
<oslc:valueType rdf:resource="http://open-services.net/ns/core#Resource"/>
</rdf:Description>
The title and description is defined in dcterms: title = “Validates Requirements Collection” and description = “Requirement Collection that is validated by the Test Plan. It is likely that the target resource will be an oslc_rm:RequirementCollection but that is not necessarily the case.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:hidden
Indicates the resource of property should not be displayed to users.
FALSE
oslc:occurs
The number of times the defined property may occur. Values are defined in oslc:Cardinality.
Given that this is optional, we will not provide any value in our simple POST body. We will include <oslc_rm:RequirementsCollection/> in the body of our test plan creation factory post.
node a140 – description
Here’s the details of the node:
<rdf:Description rdf:nodeID="A140">
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Descriptive text (reference: Dublin Core) about resource represented as rich text in XHTML content. SHOULD include only content that is valid and suitable inside an XHTML <div> element.</dcterms:description>
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">description</oslc:name>
<oslc:propertyDefinition rdf:resource="http://purl.org/dc/terms/description"/>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Description</dcterms:title>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/>
<oslc:valueType rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"/>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
</rdf:Description>
The title and description is defined in dcterms: title = “Description” and description = “Descriptive text (reference: Dublin Core) about resource represented as rich text in XHTML content. SHOULD include only content that is valid and suitable inside an XHTML <div> element.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:readOnly
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:hidden
Indicates the resource of property should not be displayed to users.
FALSE
oslc:name
The local name of the defined property.
description
oslc:propertyDefinition
The formal review records of the resource.
http://purl.org/dc/terms/description
oslc:isMemberProperty
If true then the described resource is a container and the defined property is used for container membership.
We will include <dcterms:derscription>Test Plan created from API</dcterms:description> in the body of our test plan creation factory post.
node a141 – planning effort
Here’s the details of the node:
<rdf:Description rdf:nodeID="A141">
<oslc:hidden rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:hidden>
<dcterms:description rdf:datatype="http://www.w3.org/2001/XMLSchema#string">The planning effort that the Test Plan defined in person hour.</dcterms:description>
<dcterms:title rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Planning Effort</dcterms:title>
<oslc:isMemberProperty rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:isMemberProperty>
<oslc:propertyDefinition rdf:resource="http://jazz.net/ns/qm/rqm#planningEffort"/>
<oslc:occurs rdf:resource="http://open-services.net/ns/core#Zero-or-one"/>
<rdf:type rdf:resource="http://open-services.net/ns/core#Property"/>
<oslc:valueType rdf:resource="http://www.w3.org/2001/XMLSchema#float"/>
<oslc:readOnly rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">false</oslc:readOnly>
<oslc:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">planningEffort</oslc:name>
</rdf:Description>
The title and description is defined in dcterms: title = “Planning Effort” and description = “The planning effort that the Test Plan defined in person hour.”
The rest of the values are <oslc:> values. The definition of each of these values is defined in the “rdf:data=“ tag. There are seven values in this nodes:
Tag
Definition
Value
oslc:hidden
Indicates the resource of property should not be displayed to users.
FALSE
oslc:isMemberProperty
If true then the described resource is a container and the defined property is used for container membership.
FALSE
oslc:propertyDefinition
The formal review records of the resource.
http://jazz.net/ns/qm/rqm#planningEffort
oslc:occurs
The number of times the defined property may occur. Values are defined in oslc:Cardinality.
If true then the defined property cannot be directly written by clients, but may be updated indirectly by servers.
FALSE
oslc:name
The local name of the defined property.
planningEffort
We will include <rqm_qm:planningEffort>42.0</rqm_qm:planningEffort> in the body of our test plan creation factory post.
Putting it all together
Now that we’ve gone thru the resource shape and defined the body context, we should be able to create a new Automation Test Adapter. While we only have one mandatory property, Title, we can now populate a full POST body with all the values we’ve identified above.
curl --location -g --request POST '{{qm#TestPlan-factory-URL}}?oauth_consumer_key={{consumerKey}}&oauth_token={{oauthToken}}&oauth_signature_method=HMAC-SHA1&oauth_timestamp={{oauthTimeStamp}}&oauth_nonce={{oauthNonce}}&oauth_signature={{oauthSignature}}' \
--header 'Accept: application/rdf+xml' \
--header 'Referer: https://elmwb.com:9443/rm' \
--header 'Configuration-Context: https://elmwb.com:9443/rm/oslc_qm/contexts/{{ConfigurationContext}}' \
--header 'Content-Type: application/xml' \
--data-raw '<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:oslc_qm="http://open-services.net/ns/qm#"
xmlns:oslc_rm="http://open-services.net/ns/rm#"
xmlns:rqm_qm="http://jazz.net/ns/qm/rqm#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:oslc="http://open-services.net/ns/core#"
xmlns:process="http://jazz.net/ns/process#"
xmlns:rqm_process="http://jazz.net/xmlns/prod/jazz/rqm/process/1.0/"
xmlns:calm="http://jazz.net/xmlns/prod/jazz/calm/1.0/"
>
<oslc_qm:TestPlan>
<dcterms:title>Test plan created from API</dcterms:title>
<dcterms:description>Here'\''s a really long description that was created by typing a bunch of words.</dcterms:description>
<oslc:formalReview/>
<oslc:hasChildPlan/>
<rqm_qm:catagory/>
<oslc:hasPriority/>
<foaf:contributor/>
<oslc:template/>
<oslc:relatedChangeRequest/>
<process:iteration/>
<oslc:testSchedule/>
<process:teamArea/>
<oslc:hasWorkflowState/>
<oslc:runsOnTestEnvironment/>
<oslc:usesTestCase/>
<oslc:keyDate/>
<oslc:testsDevelopmentPlan/>
<oslc:attachment/>
<rqm_qm:objectiveStatusGroup/>
<oslc:risk/>
<oslc:containsTestSuite/>
<rqm_qm:executionEffort>42.0</rqm_qm:executionEffort>
<oslc:category_PML_F4kaEeynq4H4YH03kw/>
<oslc:category_PMRep4kaEeynq4H4YH03kw/>
<oslc:category_PL_KwIkaEeynq4H4YH03kw/>
<oslc_rm:validatesRequirementCollection/>
<rqm_qm:planningEffort>42.0</rqm_qm:planningEffort>
</oslc_qm:TestPlan>
</rdf:RDF>'
We’ve been able to identify the name space based on the , i.e. if we look at a property definition of “http://jazz.net/ns/qm/rqm#planningEffort” we see that the beginning of it, “http://jazz.net/ns/qm/rqm” matches the xmlns our resource shape of xmlns:rqm_qm. We can now use that as our name space for the property in the above POST.
In future posts, we will start digging thru some of the optional properties, and what other information is provided within the resource shape.
Well, I thought I had the last major bug figured out, but it was still there. So back to the drawing board. This is a bit of an insidious problem since it causes unexpected changes to the data. In order to keep from corrupting my testers data, I have not released any of my interim tests, even when I think I have it right.
I then walked away from the problem for a while, and even posted a plaintiff cry on a few different iOS sites. The answers that came back where to simplify my SwiftUI View. Break it apart. I didn’t understand how this could fix the problem, so I refused to entertain that as a valid solution for a few hours
Imagine my surprise when I finally relented and created a new SwiftUI view just for the Delete, Edit and View button overlay. This had the effect of isolating the data to another view, and solved the problem. The app now will correctly allow for a user to edit an existing card, view the card in a nice full screen mode, or remove the card from the event list. Exactly the behavior I wanted.
At this point I believe I have a feature complete app. I do have plenty of ideas for additional features in the future, but after playing with this app in my spare time for four years, I think it’s time to finish the polishing and make it available on the app store.
One thing I really need to look at is how to best test the behavior of the app, both at the DB layer as well as the UX layer. Even though I am a single person shop, who only get’s to work on this out side of the day job and all other activities (i.e, maybe an hour or two here an there), I believe that investing into some kind of a test bed would help improve my productivity.
I’ve been working on my card tracking app for some time. I have been using it for approximately 4 years to track my own holiday cards, so there’s tons of data stored in my alpha and beta version.
Today I finally figured out the last major bug, before I look to posting it to the App Store and it’s a dooosey. It will require that I reenter all the data I have in my local copy. The good news is, this will be a major test of how much easier the app is now compared to when I first started using it.
The bug is a very simple uninitialized value on the initial save. I forgot to set the UUID of the recipient and of the card itself. This was causing all kinds of strange behavior later in the app.
I’ve been using my Card Tracking App in ernest lately, and have come a cross a strange bug. When I am taking a picture with the camera of a card from within the app, saving the card event occurs, but the image is not saved, while sometimes the whole save fails. This seems to have started with the latest iOS updates (iOS 15.4).
Today I am hoping to be able to figure out if this is a problem with my camera picker or with the save function. The reason this is a big issue for me is that when I changed my card list to a card grid, I lost the ability to delete event records for now. This means I am having a bunch of erroneous entries in the recipient card view.
I need to resolve both of these issues before I start thinking about adding in the card classifier I’ve been working on.
I’ve been taking some much needed time off, having not been able to take some of my corporate vacation last year. During this time, I am watching the Beatle’s Get Back documentary directed by Peter Jackson.
I’ve always liked their music, and have enjoyed watching the back room machinations of their time in 1969.
I can tell that I’ve been working in an Agile world, when I came to the realization that almost every day the Beatles did a retrospective. They looked at what went well during their session that day, what they may focus on the next day, and what they have learned.
They also started each day easing their way into all the challenges coming up, sitting around and talking. Was this a seated “Stand Up?”