Skip to content

Commit 37e04be

Browse files
Ported definition and standard model. Updated patent model.
Signed-off-by: Steve Springett <steve@springett.us>
1 parent 9575876 commit 37e04be

6 files changed

+352
-25
lines changed

schema/2.0/cyclonedx-2.0.schema.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,9 @@
7272
},
7373
"declarations": {
7474
"$ref": "model/cyclonedx-declaration-2.0.schema.json#/$defs/declarations"
75+
},
76+
"definitions": {
77+
"$ref": "model/cyclonedx-definition-2.0.schema.json#/$defs/definitions"
7578
}
76-
7779
}
7880
}
Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,23 @@
11
{
22
"$schema": "https://json-schema.org/draft/2020-12/schema",
3-
"$id": "http://localhost:8080/schema/2.0/cyclonedx-definition-2.0.schema.json",
3+
"$id": "https://cyclonedx.org/schema/2.0/model/cyclonedx-definition-2.0.schema.json",
44
"type": "null",
5-
"title": "CycloneDX Transparency Expression Language: Definition",
6-
"$comment" : "CycloneDX JSON schema is published under the terms of the Apache License 2.0.",
5+
"title": "CycloneDX Definition Model",
6+
"$comment" : "OWASP CycloneDX is an Ecma International standard (ECMA-424) developed in collaboration between the OWASP Foundation and Ecma Technical Committee 54 (TC54). The standard is published under a royalty-free patent policy. This JSON schema is the reference implementation and is licensed under the Apache License 2.0.",
77
"$defs": {
8+
"definitions": {
9+
"type": "object",
10+
"title": "Definitions",
11+
"description": "A collection of reusable objects that are defined and may be used elsewhere in the BOM.",
12+
"additionalProperties": false,
13+
"properties": {
14+
"standards": {
15+
"$ref": "cyclonedx-standard-2.0.schema.json#/$defs/standards"
16+
},
17+
"patents": {
18+
"$ref": "cyclonedx-patent-2.0.schema.json#/$defs/patents"
19+
}
20+
}
21+
}
822
}
923
}

schema/2.0/model/cyclonedx-patent-2.0.schema.json

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,171 @@
55
"title": "CycloneDX Patent Model",
66
"$comment" : "OWASP CycloneDX is an Ecma International standard (ECMA-424) developed in collaboration between the OWASP Foundation and Ecma Technical Committee 54 (TC54). The standard is published under a royalty-free patent policy. This JSON schema is the reference implementation and is licensed under the Apache License 2.0.",
77
"$defs": {
8+
"patents": {
9+
"type": "array",
10+
"title": "Patents",
11+
"description": "The list of either individual patents or patent families.",
12+
"items": {
13+
"anyOf": [
14+
{ "$ref": "#/$defs/patent" },
15+
{ "$ref": "#/$defs/patentFamily" }
16+
]
17+
}
18+
},
19+
"patent": {
20+
"type": "object",
21+
"title": "Patent",
22+
"description": "A patent is a legal instrument, granted by an authority, that confers certain rights over an invention for a specified period, contingent on public disclosure and adherence to relevant legal requirements. The summary information in this object is aligned with [WIPO ST.96](https://www.wipo.int/standards/en/st96/) principles where applicable.",
23+
"required": ["patentNumber", "jurisdiction", "patentLegalStatus"],
24+
"additionalProperties": false,
25+
"properties": {
26+
"bom-ref": {
27+
"$ref": "cyclonedx-common-2.0.schema.json#/$defs/refType",
28+
"title": "BOM Reference",
29+
"description": "An identifier which can be used to reference the object elsewhere in the BOM. Every `bom-ref` must be unique within the BOM."
30+
},
31+
"patentNumber": {
32+
"type": "string",
33+
"pattern": "^[A-Za-z0-9][A-Za-z0-9\\-/.()\\s]{0,28}[A-Za-z0-9]$",
34+
"title": "Patent Number",
35+
"description": "The unique number assigned to the granted patent by the issuing authority. Aligned with `PatentNumber` in WIPO ST.96. Refer to [PatentNumber in ST.96](https://www.wipo.int/standards/XMLSchema/ST96/V8_0/Patent/PatentNumber.xsd).",
36+
"examples": ["US987654321", "EP1234567B1"]
37+
},
38+
"applicationNumber": {
39+
"$ref": "#/$defs/patentApplicationNumber"
40+
},
41+
"jurisdiction": {
42+
"$ref": "#/$defs/patentJurisdiction"
43+
},
44+
"priorityApplication": {
45+
"$ref": "#/$defs/priorityApplication"
46+
},
47+
"publicationNumber": {
48+
"type": "string",
49+
"pattern": "^[A-Za-z0-9][A-Za-z0-9\\-/.()\\s]{0,28}[A-Za-z0-9]$",
50+
"title": "Patent Publication Number",
51+
"description": "This is the number assigned to a patent application once it is published. Patent applications are generally published 18 months after filing (unless an applicant requests non-publication). This number is distinct from the application number. \n\nPurpose: Identifies the publicly available version of the application. \n\nFormat: Varies by jurisdiction, often similar to application numbers but includes an additional suffix indicating publication. \n\nExample:\n - US: US20240000123A1 (indicates the first publication of application US20240000123) \n - Europe: EP23123456A1 (first publication of European application EP23123456). \n\nWIPO ST.96 v8.0: \n - Publication Number field: https://www.wipo.int/standards/XMLSchema/ST96/V8_0/Patent/PublicationNumber.xsd"
52+
},
53+
"title": {
54+
"type": "string",
55+
"title": "Patent Title",
56+
"description": "The title of the patent, summarising the invention it protects. Aligned with `InventionTitle` in WIPO ST.96. Refer to [InventionTitle in ST.96](https://www.wipo.int/standards/XMLSchema/ST96/V8_0/Patent/InventionTitle.xsd)."
57+
},
58+
"abstract": {
59+
"type": "string",
60+
"title": "Patent Abstract",
61+
"description": "A brief summary of the invention described in the patent. Aligned with `Abstract` and `P` in WIPO ST.96. Refer to [Abstract in ST.96](https://www.wipo.int/standards/XMLSchema/ST96/V8_0/Patent/Abstract.xsd)."
62+
},
63+
"filingDate": {
64+
"type": "string",
65+
"format": "date",
66+
"title": "Filing Date",
67+
"description": "The date the patent application was filed with the jurisdiction. Aligned with `FilingDate` in WIPO ST.96. Refer to [FilingDate in ST.96](https://www.wipo.int/standards/XMLSchema/ST96/V8_0/Patent/FilingDate.xsd)."
68+
},
69+
"grantDate": {
70+
"type": "string",
71+
"format": "date",
72+
"title": "Grant Date",
73+
"description": "The date the patent was granted by the jurisdiction. Aligned with `GrantDate` in WIPO ST.96. Refer to [GrantDate in ST.96](https://www.wipo.int/standards/XMLSchema/ST96/V8_0/Patent/GrantDate.xsd)."
74+
},
75+
"patentExpirationDate": {
76+
"type": "string",
77+
"format": "date",
78+
"title": "Expiration Date",
79+
"description": "The date the patent expires. Derived from grant or filing date according to jurisdiction-specific rules."
80+
},
81+
"patentLegalStatus": {
82+
"type": "string",
83+
"title": "Legal Status",
84+
"description": "Indicates the current legal status of the patent or patent application, based on the WIPO ST.27 standard. This status reflects administrative, procedural, or legal events. Values include both active and inactive states and are useful for determining enforceability, procedural history, and maintenance status.",
85+
"enum": [
86+
"pending",
87+
"granted",
88+
"revoked",
89+
"expired",
90+
"lapsed",
91+
"withdrawn",
92+
"abandoned",
93+
"suspended",
94+
"reinstated",
95+
"opposed",
96+
"terminated",
97+
"invalidated",
98+
"in-force"
99+
],
100+
"meta:enum": {
101+
"pending": "The patent application has been filed but not yet examined or granted.",
102+
"granted": "The patent application has been examined and a patent has been issued.",
103+
"revoked": "The patent has been declared invalid through a legal or administrative process.",
104+
"expired": "The patent has reached the end of its enforceable term.",
105+
"lapsed": "The patent is no longer in force due to non-payment of maintenance fees or other requirements.",
106+
"withdrawn": "The patent application was voluntarily withdrawn by the applicant.",
107+
"abandoned": "The patent application was abandoned, often due to lack of action or response.",
108+
"suspended": "Processing of the patent application has been temporarily halted.",
109+
"reinstated": "A previously abandoned or lapsed patent has been reinstated.",
110+
"opposed": "The patent application or granted patent is under formal opposition proceedings.",
111+
"terminated": "The patent or application has been officially terminated.",
112+
"invalidated": "The patent has been invalidated, either in part or in full.",
113+
"in-force": "The granted patent is active and enforceable."
114+
}
115+
},
116+
"patentAssignee": {
117+
"type": "array",
118+
"title": "Patent Assignees",
119+
"description": "A collection of organisations or individuals to whom the patent rights are assigned. This supports joint ownership and allows for flexible representation of both corporate entities and individual inventors.",
120+
"items": {
121+
"oneOf": [
122+
{
123+
"title": "Person",
124+
"$ref": "cyclonedx-common-2.0.schema.json#/$defs/organizationalContact"
125+
},
126+
{
127+
"title": "Organizational Entity",
128+
"$ref": "cyclonedx-common-2.0.schema.json#/$defs/organizationalEntity"
129+
}
130+
]
131+
}
132+
},
133+
"externalReferences": {
134+
"$ref": "cyclonedx-common-2.0.schema.json#/$defs/externalReferences"
135+
}
136+
}
137+
},
138+
"patentFamily": {
139+
"type": "object",
140+
"title": "Patent Family",
141+
"description": "A patent family is a group of related patent applications or granted patents that cover the same or similar invention. These patents are filed in multiple jurisdictions to protect the invention across different regions or countries. A patent family typically includes patents that share a common priority date, originating from the same initial application, and may vary slightly in scope or claims to comply with regional legal frameworks. Fields align with WIPO ST.96 standards where applicable.",
142+
"required": ["familyId"],
143+
"additionalProperties": false,
144+
"properties": {
145+
"bom-ref": {
146+
"$ref": "cyclonedx-common-2.0.schema.json#/$defs/refType",
147+
"title": "BOM Reference",
148+
"description": "An identifier which can be used to reference the object elsewhere in the BOM. Every `bom-ref` must be unique within the BOM. \n\nFor a patent, it might be a good idea to use a patent number as the BOM reference ID."
149+
},
150+
"familyId": {
151+
"type": "string",
152+
"title": "Patent Family ID",
153+
"description": "The unique identifier for the patent family, aligned with the `id` attribute in WIPO ST.96 v8.0's `PatentFamilyType`. Refer to [PatentFamilyType in ST.96](https://www.wipo.int/standards/XMLSchema/ST96/V8_0/Patent/PatentFamilyType.xsd)."
154+
},
155+
"priorityApplication": {
156+
"$ref": "#/$defs/priorityApplication"
157+
},
158+
"members": {
159+
"type": "array",
160+
"title": "Family Members",
161+
"description": "A collection of patents or applications that belong to this family, each identified by a `bom-ref` pointing to a patent object defined elsewhere in the BOM.",
162+
"items": {
163+
"$ref": "cyclonedx-common-2.0.schema.json#/$defs/refLinkType",
164+
"title": "BOM Reference",
165+
"description": "A `bom-ref` linking to a patent or application object within the BOM."
166+
}
167+
},
168+
"externalReferences": {
169+
"$ref": "cyclonedx-common-2.0.schema.json#/$defs/externalReferences"
170+
}
171+
}
172+
},
8173
"patentAssertions": {
9174
"type": "array",
10175
"title": "Patent Assertions",

schema/2.0/model/cyclonedx-patent-assertion-2.0.schema.json

Lines changed: 0 additions & 9 deletions
This file was deleted.

schema/2.0/model/cyclonedx-patent-family-2.0.schema.json

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)