This specification is one component of a Work Product that also includes:
This document is related to:
This document defines the overall approach to PROMCODE (PROject Management of COntracted DElivery) based on the Open Services for Lifecycle Collaboration (OSLC) Core 3.0 [OSLCCore3] Specification. PROMCODE specification constitutes the approach outlined in this document and interface definitions referenced in other documents.
TC members should send comments on this specification to the TC’s email list. Others should send comments to the TC’s public comment list oslc-promcode-comment@lists.oasis-open.org, after subscribing to it by following the instructions at the “Send A Comment” button on the TC’s web page at https://www.oasis-open.org/committees/oslc-promcode/.
This specification is provided under the RF on Limited Terms Mode of the OASIS IPR Policy, the mode chosen when the Technical Committee was established. For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the TC’s web page (https://www.oasis-open.org/committees/oslc-promcode/ipr.php).
Note that any machine-readable content (Computer Language Definitions) declared Normative for this Work Product is provided in separate plain text files. In the event of a discrepancy between any such plain text file and display content in the Work Product's prose narrative document(s), the content in the separate plain text file prevails.
[OSLC-PROMCODE-v1.0-Spec]
OSLC PROMCODE Version 1.0. Part 1: Specification.
Edited by Mikio Aoyama, Yoshio Horiuchi, Tom Kamimura, Shinji Matsuoka, Shigeaki Matsumoto, Masaki Wakao, Kazuo Yabuta, and Hiroyuki Yoshida.
28 April 2021.
OASIS Committee Specification Draft 01.
https://docs.oasis-open.org/oslc-promcode/promcode/v1.0/csd01/promcode-spec.html.
Latest stage: https://docs.oasis-open.org/oslc-promcode/promcode/v1.0/promcode-spec.html.
Copyright © OASIS Open 2021. All Rights Reserved.
All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the OASIS website.
This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification.
OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so.
OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims.
The name "OASIS" is a trademark of OASIS, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see https://www.oasis-open.org/policies-guidelines/trademark for above guidance.
This section is non-normative.
Global software delivery is commonplace today. With ever increasing pressure on the delivery of software projects for faster delivery, lower cost, and improved quality, it is becoming common for software delivery to be performed with collaboration of multiple organizations. Effective collaboration between multiple organizations requires activities to be managed and data to be shared across organizational boundaries. The management of software delivery can be highly challenging due to the diversity of the development processes, methods, tools and platforms used by organizations participating in a project [SPMC]. Management data and management practice are usually unique to each organization. Typically, manual operations are performed in exchanging proprietary management data and in coordinating activities, resulting in inefficient, error-prone and inflexible operations. As the number of organizations involved increases in a software delivery, the need for more systematic and standards-based data sharing and coordination becomes critical.
To address the need of systematic sharing of project management information, the PROMCODE consortium was created in Japan with seven member organizations consisting of Nanzan University and six IT service companies which are IBM, Hitachi, Fujitsu, NEC, NRI, and NTT Data. The consortium worked on defining standard information for management of contracted software delivery and published a specification document in 2013 [PROMCODE13][PROMCODE14]. The work was built on the OSLC framework and the technical content was based on the OSLC Core specification at that time. As a center of OSLC activities moved to OASIS, some of the core members of the consortium decided to bring its content to OASIS for global standard creation, and created the OASIS PROMCODE project. The main difference of the OASIS project from the work done by the consortium is an extended scope in OASIS and synchronization with the evolution of the OSLC Core specification [OSLCCore3]. The consortium work focused on minimal set of resources considered at that time. When each company implemented the specification, it was recognized that more resources were needed to reflect the general practice used in the industry. In particular, when two collaborating organizations do not share the management environment, one organization sends to another organization a status of all relevant project information as a report. This is a common practice and the consortium specification did not address that. The OASIS project decided to address that with addition of further resources needed.
The PROMCODE specification is intended to provide a common interface to exchange project management (PM) data across organizational boundaries. Figure 1 illustrates a generic model of collaborative software development. A set of organizations, including A, B1, …, Bn, C1,1, …, C1,m, …,Cn,m, are working together to deliver a software system. Each organization employs own management process, tools and a model of management data. Therefore, we assume a model of management data and management tools used by each organization are different from those of other organizations. As a generic collaboration model, the two roles are assumed between any two organizations working together, that is, acquirer and supplier. The goal of the PROMCODE specification is to provide an open standard interface to exchange the management data between an acquirer and a supplier. In many real situations, each organization uses its own management data schema and management tools.
To meet the goal, the PROMCODE specification defines a solution of two layers as illustrated in Fig. 2. The left-hand column represents the project management space and right-hand column does the corresponding OSLC Resource Definition in RDF [rdf11-concepts]. The upper layer is the PROMCODE specification and the lower layer is the Project-Specific Definitions. The PROMCODE Domain Model is an abstract definition of the structure of the project management data to be exchanged. The PROMCODE Domain Model is formulated for contracted delivery, derived from the project management knowledge [PMBOK5] and practices of contracted delivery of software [PROMCODE13], [PROMCODE14]. The PROMCODE Resource Definition is a representation of the PROMCODE Domain Model in terms of OSLC Resource Definition in RDF. For a specific project, the PROMCODE Domain Model is specialized to the Project-Specific Model, which extends the PROMCODE Domain Model. Similarly, the PROMCODE Resource Definition is specialized to the Project-Specific Resource Definition for a specific project. By this framework, different data in the different project management tools can be exchanged through the Project-Specific Resource Definition.
The PROMCODE software architecture is a typical software architecture that implements the specification. Since the PROMCODE specification is based on the OSLC Core 3.0, the architecture assumes an implementation of OSLC Core 3.0 [OSLCCore3] as an underlying platform. The goal of the PROMCODE software architecture is to enable exchanging project management data through the PROMCODE specification between multiple organizations that may use different data models of project management with different tools and methods.
The architecture is illustrated in Figure 3. As the figure shows, the PROMCODE clients and servers coordinate mapping of the organization-specific data instances from and to the Project-Specific Resources that are the instances of the Project-Specific PROMCODE Resource Definition. The interaction between the clients and servers takes place in the Resource-Oriented manner [ROA] with HTTP operations[HTTP11]. For example, supplier B1 and supplier B2 transform their respective B1-specific PM (Project Management) data and B2-Specific PM data, to the project-specific PROMCODE resources through their PROMCODE servers. Then, acquirer A can translate project-specific PROMCODE resources to A-specific PM data through either its PROMCODE client or its PROMCODE server. Note that the project management data of suppliers B1 and B2 may be defined as data of two separate data models, but it is possible to transform them to the data of a single model used by A. In this way, the PROMCODE specification can avoid the combinatorial explosion of transforming data across different data models.
PROMCODE defines the namespace URI of http://open-services.net/ns/promcode#
with a namespace prefix of oslc_promcode
.
In addition, PROMCODE uses the following prefixes:
Prefix | Namespace |
---|---|
dcterms
|
http://purl.org/dc/terms/ |
foaf
|
http://xmlns.com/foaf/0.1/ |
ldp
|
http://www.w3.org/ns/ldp# |
oslc
|
http://open-services.net/ns/core# |
rdf
|
http://www.w3.org/1999/02/22-rdf-syntax-ns# |
rdfs
|
http://www.w3.org/2000/01/rdf-schema# |
xsd
|
http://www.w3.org/2001/XMLSchema# |
The key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL in this specification are to be interpreted as described in [RFC2119].
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative. Specifically the following list indicates normative and non-normative sections in this specification.
Terminology is based on OSLC Core 3.0 [OSLCCore3], W3C Linked Data Platform [LDP], W3C's Architecture of the World Wide Web [WEBARCH] and Hyper-text Transfer Protocol [HTTP11].
This section is non-normative.
In this figure, if no multiplicity is shown on an association end, it implies a multiplicity of zero to unlimited (0 .. *). The multiplicity of an attribute is also omitted for simplification. While its default is a multiplicity of zero to one (0 .. 1), there are exceptional cases where the multiplicity is exactly 1 in which it will be explicitly described as such in the subsequent part of this section.
A scope item represents a scope of work from the acquirer's view of a software development contract. It represents a unit of value to be accomplished by the software supplier in the contract. For example, it may represent a function required, a use case in which the software will be used, a requirement which the acquirer expects, or a screen which will provide some concrete functions to the user of the software. A scope item is not an activity and therefore, cannot be started nor ended.
A ScopeItem entity has the size property that is used to determine the size of a contract between an acquirer and a supplier. This property is not used to track the progress of work. In this sense, a ScopeItem entity is different from an Artifact entity or a WorkItem entity.
An acquirer can use a set of ScopeItem entities as managed units to manage a whole scope of development. Both an acquirer and a supplier also use a set of ScopeItem entities to track the size of development. Attributes plannedSize and actualSize of a ScopeItem are used for the purpose. There should be agreement between an acquirer and a supplier on what kind of ScopeItem entities should be used and on how large each ScopeItem entity is. Change of a ScopeItem entity or its estimated size needs a change of the agreement. A ScopeItem entity can be decomposed into finer grained ScopeItem entities to be used in detailed management. In that case, a coarse grained ScopeItem entity may be used to aggregate a set of finer grained ScopeItem entities.
A work item describes an activity to be performed in a software development contract. It adds details to the description of the work that is described by a scope item. These details typically include cost, schedule, and resource requirements. The set of all work items in a project forms a work breakdown structure.
A WorkItem entity represents the supplier's internal activity. For example, it may represent a development phase such as analysis, design, implementation, or test. It may also represent a finer grained activity such as document writing, reviewing, or coding. A WorkItem entity is a managed unit of activity required to implement a ScopeItem entity or to produce an Artifact entity.
Progress of a WorkItem entity is managed by comparing planned and actual dates on which it is started and ended.
A WorkItem entity can be decomposed into finer grained WorkItem entities to be used in detailed management. A coarse grained WorkItem entity is used to aggregate a set of fine grained WorkItem entities.
An artifact is a work product that is produced in a project such as design documents, source code, test report, and so on. An artifact may be physical or digital. An artifact is produced for a work item or a scope item.
An Artifact entity can be measured using Measure entities, and their measured values may vary at each point of time on a project. The quality of an Artifact entity is managed by comparing targeted and actual Measure entities.
An Artifact entity can be decomposed into finer grained Artifact entities to be used in detailed management. A coarse grained Artifact entity may be used to aggregate a set of finer grained Artifact entities.
A risk is a potential problem that must be controlled before it occurs in order to meet the objectives of a project. Failure to control the risk may result in a situation that can negatively impact the project, such as a schedule delay and quality problems. If a risk actually causes the situation to occur, it typically becomes an issue.
An issue is a situation that must be resolved to avoid negative impact to the project. Failure to resolve the issue may result in negative consequences to the project, such as a schedule delay and not meeting quality goals.
A managed item is one of a scope item, a work item, an artifact, a risk, or an issue.
ManagedItem is a super class which abstracts five classes, that is, ScopeItem, WorkItem, Artifact, Risk, and Issue.
A plan is a collection, or a snapshot, of managed entities which is agreed on between an acquirer and a supplier at the project initiation and on the timing when a plan is changed.
A Plan entity is a ManagedItemCollection entity which is a collection of planned ScopeItem, WorkItem, and Artifact entities together with targeting Measure entities.
A report is a collection, or a snapshot, of managed items which is created by a supplier for project monitoring.
A Report entity is a ManagedItemCollection entity which is a collection of ScopeItem, WorkItem, and Artifact entities together with associated Measurement entities and Measure entities. It represents the situation of the project on a specific date.
A risk collection is a collection, or a snapshot, of risks.
Only Risk entities can be collected in a RiskCollection entity. It may collect all Risk entities of the project on a specific date, all Risk entities of some categories such as those in certain state or those with priority above some value, and all Risk entities related to the specific ScopeItem entity.
An issue collection is a collection, or a snapshot, of issues.
Only Issue entities can be collected in an IssueCollection entity. It may collect all Issue entities of the project on a specific date, all Issue entities of some categories such as those in certain state or those with priority above some value, and all Issue entities related to the specific ScopeItem entity.
A managed item collection is a collection of managed items. Four kinds of such a collection are used: a plan, a report, a risk collection, and an issue collection.
ManagedItemCollection is a super class which abstracts four kinds of collections of managed items, that is, Plan, Report, RiskCollection, and IssueCollection. A ManagedItemCollection entity must collect managed items belonging to only one project.
A measure is an observation of measurable attribute of an artifact.
A Measure entity has a metric such as "number of lines of codes (LOC)", "number of found bugs", and so on.
It also has a unit which defines the unit of the numbered value, for example, "1" means one line or one kilo lines. A Measure entity must be either targeted by one Artifact entity or observed by one Measurement entity.
A Measurement entity links between an Artifact entity and its actual Measure entities. It also represents the date on which the Measure entities are taken.
A software development project is a collaborative activity to be executed in a fixed time period to produce software systems and/or products.
A Project entity represents the information of the whole project such as the name of the project, the descriptions of the project, and progress of the whole project. A Project entity also specifies a Metric entity and the unit of size of ScopeItem entities because they should be unique in a project.
A String entity represents a character string.
A DateTime entity represents a date and time.
A Decimal entity represents a decimal number.
Table 1 shows a typical progress management table. The table describes the status of implementing functions defined in the first column. Each function is divided into a collection of sub-functions. Each sub-function has phases of analysis, design, and coding activities. Note that the real management tables are more complex than shown in the case. Functions and sub-functions form a tree structure with several levels. There are more activities required to implement sub-functions.
Table 1 only shows the essential structure of real management tables.
Function | Sub Function | Analysis | Design | Coding | ||||
---|---|---|---|---|---|---|---|---|
Start | End | Start | End | Start | End | |||
A | A1 | Planned | 6/4 | 6/11 | 6/12 | 6/19 | 6/20 | 6/27 |
Actual | 6/4 | 6/10 | 6/11 | 6/19 | 6/20 | 6/26 | ||
A2 | Planned | 6/4 | 6/11 | 6/12 | 6/19 | 6/20 | 6/25 | |
Actual | 6/4 | 6/12 | 6/13 | 6/20 | 6/21 | 6/26 | ||
B | B1 | Planned | 6/4 | 6/11 | 6/12 | 6/19 | 6/20 | 6/27 |
Actual | 6/4 | 6/12 | 6/13 | 6/20 | 6/21 | 6/28 |
Fig. 5 Example of Project-Specific Model for Progress Management illustrates the corresponding project-specific model. Function and Sub Function are subclasses of ScopeItem, and the Analysis, Design, and Coding activities are subclasses of WorkItem. A Function is decomposed into a collection of Sub Functions which have three kinds of required WorkItems for implementation. This structure indicates that all project management data in Table 1 can be represented as instances of the PROMCODE Domain Model classes of ScopeItem and WorkItem.
Table 2 shows a typical quality management table. Main managed items are modules which are grouped under requirements. Each module is measured using several KPIs including lines of code, number of test cases, and number of defects found.
Requirement | Module | Line of Code | #Test Case | #Defect | |||
---|---|---|---|---|---|---|---|
Target | Actual | Target | Actual | Target | Actual | ||
R1 | M1-1 | 2,000 | 2,130 | 60 | 62 | 5 | 5 |
M1-2 | 1,500 | 1,450 | 45 | 43 | 3 | 2 | |
R2 | M2-1 | 2,000 | 1,980 | 60 | 65 | 5 | 4 |
M2-2 | 1,000 | 950 | 30 | 35 | 2 | 2 |
Fig. 6 Example of Project-Specific Model for Quality Management illustrates the corresponding project-specific model. Requirement is a subclass of ScopeItem and Module is a subclass of Artifact. A Requirement entity requires to produce some Modules entities. The structure indicates that all project management data in Table 2 can be represented as instances of PROMCODE Domain Model classes of ScopeItem, Artifact, and Measure.
This sections describes the mandatory and optional requirements for an OSLC PROMCODE server.
The PROMCODE specification is based on OSLC Core 3.0 [OSLCCore3]. PROMCODE servers and clients MUST be compliant with both the [OSLCCore3] specification and the PROMCODE specification, and SHOULD follow all the guidelines and recommendations in both of these specifications. [promcode-1]
A PROMCODE server MUST implement the vocabulary defined in 6. Vocabulary Terms and Constraints of this specification with the exception of two abstract classes ManagedItem
and ManagedItemCollection
.
[promcode-2]
The following table summarizes the requirements from OSLC Core Specification as well as some additional requirements specific to the PROMCODE specification. Note that this specification further restricts some of the requirements for OSLC Core Specification. See subsequent sections in this specification or the OSLC Core Specification to get further details on each of these requirements.
The following sections describe further restrictions and guidance on the requirements of [OSLCCore3].
As defined in RDF Namespaces, PROMCODE defines the namespace URI of http://open-services.net/ns/promcode#
with a preferred namespace prefix oslc_promcode
. Also, the common URL prefixes given there are used when they are needed.
In addition to the requirements for resource representations in [OSLCCore3], this section outlines further refinements and restrictions.
For HTTP GET requests on all PROMCODE and OSLC Core defined resource types,
A PROMCODE server MUST provide Turtle and JSON-LD, and SHOULD provide RDF/XML and XML representations. The XML and JSON representations SHOULD follow the guidelines outlined in the OSLC Core Representations Guidance to maintain compatibility with [OSLCCore2]. [promcode-22]
A PROMCODE client requesting RDF/XML SHOULD be prepared for any valid RDF/XML document. A PROMCODE client requesting XML SHOULD be prepared for representations that follow the guidelines outlined in the OSLC Core Representations Guidance. [promcode-23]
A PROMCODE server SHOULD support an [X]HTML representation and a user interface (UI) preview as defined by UI Preview Guidance. [promcode-24]
For HTTP PUT/POST requests for the PROMCODE resources that support the requests:
A PROMCODE server MUST accept Turtle and JSON-LD representations and SHOULD accept RDF/XML and XML representations. A PROMCODE server accepting RDF/XML SHOULD be prepared for any valid RDF/XML document. For XML A PROMCODE server SHOULD be prepared for representations that follow the guidelines outlined in the OSLC Core Representations Guidance. [promcode-25]
For HTTP GET response formats for Query requests,
A PROMCODE server MUST provide Turtle and JSON-LD, SHOULD provide RDF/XML and XML, and MAY provide Atom Syndication Format XML representations. [promcode-26]
text/turtle
A PROMCODE server MUST respond with Turtle representation.application/ld+json
A PROMCODE server MUST respond with JSON-LD representation.application/rdf+xml
A PROMCODE server SHOULD respond with RDF/XML representation without restrictions.application/xml
A PROMCODE server SHOULD respond with OSLC-defined abbreviated XML representation as defined in the OSLC Core Representations Guidance.application/atom+xml
A PROMCODE server SHOULD respond with Atom Syndication FOrmat XML representation as defined in the OSLC Core Representations Guidance. The Atom Syndication Format XML representation SHOULD use RDF/XML representation without restrictions for the atom:content entries representing the resource representations.OSLC Core 3.0 [OSLCCore3] specifies RDF representations (and specifically Turtle and JSON-LD) as a convention that all OSLC server implementations minimally provide and accept. OSLC PROMCODE server implementations are strongly encouraged to adopt this convention. Future versions of this specification are expected to require RDF representations for all operations and relax requirements for specialized XML representations.
XML Representation - identified by the application/xml
content type. Format representation rules are outlined in Core OSLC Core Resource Formats section.
RDF/XML Representation - identified by the application/rdf+xml
content type. No additional guidance is given.
JSON-LD Representation - identified by the application/ld+json
content type. Format representation rules are specified in JSON-LD 1.0.
Atom Syndication Format XML Representation - identified by the application/atom+xml
content type. Format representation rules are outlined in Core OSLC Core Resource Formats section.
[OSLCCore3] specifies the recommended OSLC authentication mechanisms. The PROMCODE specification introduces no additional constraints on error responses.
[OSLCCore3] specifies the OSLC Core error responses. The PROMCODE specification introduces no additional constraints on error responses.
[OSLCCore3] specifies the support of pagination of query results. The PROMCODE specification introduces no additional constraints on error responses.
A client MAY request a subset of a resource's properties as well as properties from a referenced resource. In order to support this behavior, a server MAY support the oslc.properties
and oslc.prefix
URL parameter on a HTTP GET request on individual resource request or a collection of resources by query. If the oslc.properties parameter is omitted on the request, then all resource properties MUST be provided in the response.
[promcode-28]
A client MAY request that a subset of a resource's properties be updated by using the PATCH method. [promcode-29]
For compatibility with [OSLCCore2], A PROMCODE server MAY also support partial update by identifying those properties to be modified using the oslc.properties
URL parameter on a HTTP PUT request.
[promcode-30]
If the parameter oslc.properties
contains a valid resource property on the request that is not provided in the content, the server MUST set the resource's property to a null or empty value. If the parameter oslc.properties
contains an invalid resource property, then a 409 Conflict MUST be returned.
[promcode-31]
For multi-valued properties that contain a large number of values, it may be difficult and inefficient to add or remove property values. A PROMCODE server MAY provide support for a partial update of the multi-valued properties as defined by OSLC Core Partial Update. [promcode-32]
This section describes frequently used resource operations.
A PROMCODE client MAY request the creation of a PROMCODE domain resource via HTTP/POST operation to a PROMCODE server that supports creation of a resource using Creation Factories as defined in [OSLCCore3]. [promcode-33]
Alternatively, creation of a domain resource MAY be done outside of the PROMCODE framework, i.e., by using an existing project management tool that creates a new resource and makes the resource visible to the PROMCODE framework. [promcode-34]
A PROMCODE server MUST support the HTTP GET method to obtain the representation of a resource. The detailed behavior of the GET method is described in [LDP]. [promcode-35]
A PROMCODE server MAY support the HTTP PUT method or the HTTP PATCH method to update resources. The detailed behavior of the PUT and PATCH methods is described in [LDP]. [promcode-36]
A PROMCODE server MAY support the HTTP DELETE method to delete resources. The detailed behavior of the DELETE method is described in [LDP]. [promcode-37]
A PROMCODE server MUST support OSLC Discovery capabilities defined by [OSLCCore3]. Specifically, they SHOULD support LDPC Creation Factories, MAY provide a ServiceProviderCatalog and a ServiceProvider resource for Core v2 compatibility. [promcode-38]
A PROMCODE server MAY provide a ServiceProvider Resource that can be retrieved at a implementation dependent URI. [promcode-39]
A PROMCODE server MAY provide a ServiceProviderCatalog Resource that can be retrieved at a implementation dependent URI. [promcode-40]
A PROMCODE server MAY provide a oslc:serviceProvider
property for their defined resources that will be the URI to a ServiceProvider Resource.
[promcode-41]
If a PROMCODE server supports oslc:Service
and/or oslc:ServiceProviderCatalog
resources for the compatibility with [OSLCCore2], the server MUST supply a value of http://open-services.net/ns/promcode
for the property oslc:domain
on either oslc:Service
or oslc:ServiceProviderCatalog
resources.
[promcode-42]
A PROMCODE server SHOULD support Creation Factories and list them in the Service Provider Resource as defined by OSLC Core. A PROMCODE server SHOULD support Resource Shapes for Creation Factories as defined in [OSLCCore3] [promcode-43]
A PROMCODE Server SHOULD support query capabilities, as defined by [OSLCCore3]. Servers MAY also provide oslc:ResourceShape
on oslc:QueryCapability
resources as defined by [OSLC-Shapes].
[promcode-44]
OSLC PROMCODE Version 1.0. Part 2: Vocabulary defines the vocabulary terms and constraints for OSLC PROMCODE resources. These terms and constraints are specified according to [OSLC-Vocabulary]. OSLC PROMCODE Version 1.0. Part 3: Constraints defines the constraints for OSLC resources based on [OSLC-Shapes].
The PROMCODE specification is based on [OSLCCore3], and therefore both PROMCODE servers and clients MUST conform to OSLC servers and clients defined in [OSLCCore3].
The following table summarizes the conformance clauses.
Clause Number | Requirement |
---|---|
promcode-1 | The PROMCODE specification is based on OSLC Core 3.0 [OSLCCore3]. PROMCODE servers and clients MUST be compliant with both the [OSLCCore3] specification and the PROMCODE specification, and SHOULD follow all the guidelines and recommendations in both of these specifications. |
promcode-2 |
A PROMCODE server MUST implement the vocabulary defined in 6. Vocabulary Terms and Constraints of this specification with the exception of two abstract classes ManagedItem and ManagedItemCollection .
|
promcode-3 | OSLC services MAY ignore unknown content and OSLC clients MUST preserve unknown content. |
promcode-4 | OSLC service MUST support resource operations via standard HTTP operations. |
promcode-5 | OSLC services MAY provide paging for resources but only when specifically requested by client. |
promcode-6 | OSLC services SHOULD support request for a subset of a resource’s properties via the oslc.properties URL parameter retrieval via HTTP GET. |
promcode-7 | OSLC services MAY support partial update of resources using patch semantics and MAY support via HTTP PUT. |
promcode-8 | OSLC servers SHOULD support OSLC Core 3.0 Discovery, MAY provide a ServiceProviderCatalog and SHOULD provide a ServiceProvider resource for Core v2 compatibility. |
promcode-9 | OSLC servers MAY provide LDPC creation factories to enable resource creation of PROMCODE resources via HTTP POST. |
promcode-10 | OSLC servers SHOULD provide query capabilities to enable clients to query for resources. |
promcode-11 | OSLC query capabilities SHOULD support the OSLC Core Query Syntax and MAY use other query syntax. |
promcode-12 | OSLC Services MAY offer delegated UI dialogs (creation and selections) specified via OSLC Core 3.0 Delegated Dialogs and SHOULD include discovery through a ServiceProvider resource for OSLC v2 compatibility. |
promcode-13 | OSLC Services MAY offer UI previews for resources that may be referenced by other resources specified via OSLC Core 3.0 Preview and SHOULD include discovery through a server resource for OSLC v2 compatibility. |
promcode-14 | OSLC Services MAY support Basic Auth and should do so only over HTTPS. |
promcode-15 | OSLC Services MAY support OAuth and can indicate the required OAuth URLs via the ServiceProviderCatalog or ServiceProvider resources. |
promcode-16 | OSLC Services MAY provide error responses using OSLC Core 3.0 defined error formats. |
promcode-17 | OSLC services MUST provide a Turtle representation for HTTP GET requests and SHOULD support Turtle representations on POST and PUT requests. |
promcode-18 | OSLC services SHOULD provide an RDF/XML representation for HTTP GET requests and SHOULD support RDF/XML representations on POST and PUT requests. |
promcode-19 | OSLC services SHOULD provide a XML representation for HTTP GET, POST and PUT requests that conform to the Core 2.0 Guidelines for XML. |
promcode-20 | OSLC services MUST provide JSON-LD representations for HTTP GET, POST and PUT requests that conform to the Core Guidelines for JSON-LD. |
promcode-21 | OSLC services MAY provide HTML representations for HTTP GET requests. |
promcode-22 | A PROMCODE server MUST provide Turtle and JSON-LD, and SHOULD provide RDF/XML and XML representations. The XML and JSON representations SHOULD follow the guidelines outlined in the OSLC Core Representations Guidance to maintain compatibility with [OSLCCore2]. |
promcode-23 | A PROMCODE client requesting RDF/XML SHOULD be prepared for any valid RDF/XML document. A PROMCODE client requesting XML SHOULD be prepared for representations that follow the guidelines outlined in the OSLC Core Representations Guidance. |
promcode-24 | A PROMCODE server SHOULD support an [X]HTML representation and a user interface (UI) preview as defined by UI Preview Guidance. |
promcode-25 | A PROMCODE server MUST accept Turtle and JSON-LD representations and SHOULD accept RDF/XML and XML representations. A PROMCODE server accepting RDF/XML SHOULD be prepared for any valid RDF/XML document. For XML A PROMCODE server SHOULD be prepared for representations that follow the guidelines outlined in the OSLC Core Representations Guidance. |
promcode-26 | A PROMCODE server MUST provide Turtle and JSON-LD, SHOULD provide RDF/XML and XML, and MAY provide Atom Syndication Format XML representations. |
promcode-27 |
When A PROMCODE client request:
|
promcode-28 |
A client MAY request a subset of a resource's properties as well as properties from a referenced resource. In order to support this behavior, a server MAY support the oslc.properties and oslc.prefix URL parameter on a HTTP GET request on individual resource request or a collection of resources by query. If the oslc.properties parameter is omitted on the request, then all resource properties MUST be provided in the response.
|
promcode-29 | A client MAY request that a subset of a resource's properties be updated by using the PATCH method. |
promcode-30 |
For compatibility with [OSLCCore2], A PROMCODE server MAY also support partial update by identifying those properties to be modified using the oslc.properties URL parameter on a HTTP PUT request.
|
promcode-31 |
If the parameter oslc.properties contains a valid resource property on the request that is not provided in the content, the server MUST set the resource's property to a null or empty value. If the parameter oslc.properties contains an invalid resource property, then a 409 Conflict MUST be returned.
|
promcode-32 | For multi-valued properties that contain a large number of values, it may be difficult and inefficient to add or remove property values. A PROMCODE server MAY provide support for a partial update of the multi-valued properties as defined by OSLC Core Partial Update. |
promcode-33 | A PROMCODE client MAY request the creation of a PROMCODE domain resource via HTTP/POST operation to a PROMCODE server that supports creation of a resource using Creation Factories as defined in [OSLCCore3]. |
promcode-34 | Alternatively, creation of a domain resource MAY be done outside of the PROMCODE framework, i.e., by using an existing project management tool that creates a new resource and makes the resource visible to the PROMCODE framework. |
promcode-35 | A PROMCODE server MUST support the HTTP GET method to obtain the representation of a resource. The detailed behavior of the GET method is described in [LDP]. |
promcode-36 | A PROMCODE server MAY support the HTTP PUT method or the HTTP PATCH method to update resources. The detailed behavior of the PUT and PATCH methods is described in [LDP]. |
promcode-37 | A PROMCODE server MAY support the HTTP DELETE method to delete resources. The detailed behavior of the DELETE method is described in [LDP]. |
promcode-38 | A PROMCODE server MUST support OSLC Discovery capabilities defined by [OSLCCore3]. Specifically, they SHOULD support LDPC Creation Factories, MAY provide a ServiceProviderCatalog and a ServiceProvider resource for Core v2 compatibility. |
promcode-39 | A PROMCODE server MAY provide a ServiceProvider Resource that can be retrieved at a implementation dependent URI. |
promcode-40 | A PROMCODE server MAY provide a ServiceProviderCatalog Resource that can be retrieved at a implementation dependent URI. |
promcode-41 |
A PROMCODE server MAY provide a oslc:serviceProvider property for their defined resources that will be the URI to a ServiceProvider Resource.
|
promcode-42 |
If a PROMCODE server supports oslc:Service and/or oslc:ServiceProviderCatalog resources for the compatibility with [OSLCCore2], the server MUST supply a value of http://open-services.net/ns/promcode for the property oslc:domain on either oslc:Service or oslc:ServiceProviderCatalog resources.
|
promcode-43 | A PROMCODE server SHOULD support Creation Factories and list them in the Service Provider Resource as defined by OSLC Core. A PROMCODE server SHOULD support Resource Shapes for Creation Factories as defined in [OSLCCore3] |
promcode-44 |
A PROMCODE Server SHOULD support query capabilities, as defined by [OSLCCore3]. Servers MAY also provide oslc:ResourceShape on oslc:QueryCapability resources as defined by [OSLC-Shapes].
|
This section is non-normative.
Below is a summary of some of the changes in this draft.
This section is non-normative.
The PROMCODE TC would like to thank the members of the PROMCODE Consortium for their constructive discussions during the development of the specification. Thanks also go to Arthur Ryman and Kazuhiko Funakoshi who helped in creating technical content at an early stage of the project.