From ae3930f60c89ace2227b1bf6efc593e3caf82e1e Mon Sep 17 00:00:00 2001 From: Thomas Heritage Date: Thu, 23 Apr 2026 17:22:06 +0100 Subject: [PATCH 1/7] qc.xsd: update namespace --- qc-data-model/qc.xsd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qc-data-model/qc.xsd b/qc-data-model/qc.xsd index 9a42b8f..265eae5 100644 --- a/qc-data-model/qc.xsd +++ b/qc-data-model/qc.xsd @@ -1,6 +1,6 @@ - + Class Instances From 3febe533a380c6e0472cd7498fd0e9f4fa0e10e8 Mon Sep 17 00:00:00 2001 From: Thomas Heritage Date: Thu, 23 Apr 2026 17:22:34 +0100 Subject: [PATCH 2/7] qc.xsd: remove Input & Output Groups --- qc-data-model/qc.xsd | 188 +++++++++++++------------------------------ 1 file changed, 56 insertions(+), 132 deletions(-) diff --git a/qc-data-model/qc.xsd b/qc-data-model/qc.xsd index 265eae5..8f538a6 100644 --- a/qc-data-model/qc.xsd +++ b/qc-data-model/qc.xsd @@ -103,10 +103,9 @@ - - - - + + + @@ -134,10 +133,9 @@ - - - - + + + @@ -200,52 +198,33 @@ - - - - + + + - - - - + + + - + + + + - - - - - - - - - - - - - - - - - - - - - + @@ -253,79 +232,43 @@ + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -333,38 +276,19 @@ + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - Structure Definitions From 96a81b55610e795954e01f6e4d8e765d494df559 Mon Sep 17 00:00:00 2001 From: Thomas Heritage Date: Thu, 23 Apr 2026 17:42:15 +0100 Subject: [PATCH 3/7] qc.xsd: replace HasLocator * Don't specify "default" as this permits element instances to be empty --- qc-data-model/qc.xsd | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/qc-data-model/qc.xsd b/qc-data-model/qc.xsd index 8f538a6..c5d2ce5 100644 --- a/qc-data-model/qc.xsd +++ b/qc-data-model/qc.xsd @@ -229,7 +229,10 @@ - + + + + @@ -273,7 +276,10 @@ - + + + + From 205b9acc093c628511d36264dcb8fa0f82df46d1 Mon Sep 17 00:00:00 2001 From: Thomas Heritage Date: Thu, 23 Apr 2026 17:54:04 +0100 Subject: [PATCH 4/7] qc.xsd: add CheckResultDefinition --- qc-data-model/qc.xsd | 1 + 1 file changed, 1 insertion(+) diff --git a/qc-data-model/qc.xsd b/qc-data-model/qc.xsd index c5d2ce5..a5b7b6c 100644 --- a/qc-data-model/qc.xsd +++ b/qc-data-model/qc.xsd @@ -160,6 +160,7 @@ + From 988d82b9ab3c815c2edf5be68deb09fb8892156f Mon Sep 17 00:00:00 2001 From: Thomas Heritage Date: Thu, 7 May 2026 16:23:55 +0100 Subject: [PATCH 5/7] qc.xsd: make Value optional on QCItemInput --- qc-data-model/qc.xsd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qc-data-model/qc.xsd b/qc-data-model/qc.xsd index a5b7b6c..67d3bb0 100644 --- a/qc-data-model/qc.xsd +++ b/qc-data-model/qc.xsd @@ -220,7 +220,7 @@ - + From 0a40e5a3553b3ba5bfec7516b90def2b84ca4426 Mon Sep 17 00:00:00 2001 From: Thomas Heritage Date: Thu, 7 May 2026 16:30:36 +0100 Subject: [PATCH 6/7] qc.xsd: remove all instances of "nillable" --- qc-data-model/qc.xsd | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/qc-data-model/qc.xsd b/qc-data-model/qc.xsd index 67d3bb0..f861aac 100644 --- a/qc-data-model/qc.xsd +++ b/qc-data-model/qc.xsd @@ -236,11 +236,11 @@ - - - - - + + + + + @@ -288,10 +288,10 @@ - - - - + + + + From 40ed66727c6d57adfd97debbb3127897221f6224 Mon Sep 17 00:00:00 2001 From: Thomas Heritage Date: Thu, 14 May 2026 15:33:51 +0100 Subject: [PATCH 7/7] UML SVG: update to match qc.xsd --- qc-data-model/README.md | 2 ++ qc-data-model/qc-data-model.uml_diagram.drawio.svg | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/qc-data-model/README.md b/qc-data-model/README.md index f6848e3..ab3404b 100644 --- a/qc-data-model/README.md +++ b/qc-data-model/README.md @@ -15,6 +15,8 @@ The XML Schema and Class model for EBU QC Reports, QC Profiles and QC Item Defin The class diagram for the EBU QC data model is shown below (refer to the documentation above for more details). +Note: this diagram is an SVG containing embedded draw.io data meaning it can be edited at https://www.drawio.com/ + ![UML Class diagram](qc-data-model.uml_diagram.drawio.svg) ## Approach to versioning of qc.xsd diff --git a/qc-data-model/qc-data-model.uml_diagram.drawio.svg b/qc-data-model/qc-data-model.uml_diagram.drawio.svg index ef967e8..f7d7447 100644 --- a/qc-data-model/qc-data-model.uml_diagram.drawio.svg +++ b/qc-data-model/qc-data-model.uml_diagram.drawio.svg @@ -1,4 +1,4 @@ -
Report
Report
Item Definitions
Item Definitions
Profile
Profile
0..*
0..*
QCProfile
QCProfile
ID: UUIDType
ID: UUIDType
Name [0..1]: string
Name [0..1]: string
CheckResultRule [0..1]: RuleType
CheckResultRule [0..1]: RuleType
Description [0..1]: string
Description [0..1]: string
Scopes/Scope [0..*]: LocatorType
Scopes/Scope [0..*]: LocatorType
RelevanceLevel [0..1]: Integer
RelevanceLevel [0..1]: Integer
ContentId/ContentIdentifier [1..*]: ContentIdentifierType
ContentId/ContentIdentifier [1..*]: ContentIdenti...
Requestor [0..1]: OperatorType
Requestor [0..1]: OperatorType
DueDate [0..1]: dateTime
DueDate [0..1]: dateTime
QCReport
QCReport
ReportId: UUIDType

ReportId: UUIDType
ExecutionStatus: ExecutionStatusType


ExecutionStatus: ExecutionStatusType...
ErrorDescription [0..1]: string


ErrorDescription [0..1]: string...
CheckResult [0..1]: Boolean

CheckResult [0..1]: Boolean
LastModifiedDateTime: dateTime

LastModifiedDateTime: dateTime
ReportGroupId [0..1]: string

ReportGroupId [0..1]: string
ToolInformation [0..1]: ToolInformationType

ToolInformation [0..1]: ToolInformationType
OverallAnalysisDuration [0..1]: duration

OverallAnalysisDuration [0..1]: duration
ContentId/ContentIdentifier [1..*]: ContentIdentifierType

ContentId/ContentIdentifier [1..*]: ContentIdentif...
ReportCreator [0..1]: OperatorType

ReportCreator [0..1]: OperatorType
QCItem
QCItem
EBUQCID: string
EBUQCID: string
EBUQCName [0..1]: string
EBUQCName [0..1]: string
EBUQCVersion: string
EBUQCVersion: string
InstanceId [0..1]: UUIDType
InstanceId [0..1]: UUIDType
UsedAs [0..1]: UsableAsType
UsedAs [0..1]: UsableAsType
Relevance [0..1]: Integer
Relevance [0..1]: Integer
Scopes/Scope [0..*]: LocatorType
Scopes/Scope [0..*]: LocatorTy...
Track [0..1]: string
Track [0..1]: string
0..*
0..*
QCItemInput
QCItemInput
Name: string
Name: string
Track [0..1]: string
Track [0..1]: string
WrapperLocation [0..1]: WrapperLocationType
WrapperLocation [0..1]: WrapperLocationType
Locator [0..1]: LocatorType
Locator [0..1]: LocatorType
0..*
0..*
QCItemResult
QCItemResult
EBUQCID: string
EBUQCID: string
EBUQCName [0..1]: string
EBUQCName [0..1]: string
EBUQCVersion: string
EBUQCVersion: string
InstanceId [0..1]: UUIDType
InstanceId [0..1]: UUIDType
ExecutionStatus: ExecutionStatusType
ExecutionStatus: ExecutionStatusType
ErrorDescription [0..1]: string
ErrorDescription [0..1]: string
CheckResult [0..1]: boolean
CheckResult [0..1]: boolean
ResultDescription [0..1]: string
ResultDescription [0..1]: string
Relevance [0..1]: Integer
Relevance [0..1]: Integer
ToolInformation [0..1]: ToolInformationType
ToolInformation [0..1]: ToolInformationType
Annotation [0..1]: AnnotationType
Annotation [0..1]: AnnotationType
MaxSeverity [0..1]: Integer
MaxSeverity [0..1]: Integer
VerificationMedia [0..1]: anyURI
VerificationMedia [0..1]: anyURI
DetectionMethod [0..1]: DetectionMethodType
DetectionMethod [0..1]: DetectionMethodType
Revision [0..1]: Integer
Revision [0..1]: Integer
CreationDateTime [0..1]: dateTime
CreationDateTime [0..1]: dateTime
Operator [0..1]: OperatorType
Operator [0..1]: OperatorType
AnalysisMethodUsed: AnalysisMethodType
AnalysisMethodUsed: AnalysisMethodType
QCItemInputGroup
QCItemInputGroup
QCItemOutput
QCItemOutput
Name: string
Name: string
Track [0..1]: string
Track [0..1]: string
WrapperLocation [0..1]: WrapperLocationType
WrapperLocation [0..1]: WrapperLocationType
Locator [0..1]: LocatorType
Locator [0..1]: LocatorType
QCItemInputValue
QCItemInputValue
Value: string
Value: string
0..*
0..*
QCItemDefinition
QCItemDefinition
EBUQCID: string
EBUQCID: string
EBUQCName: string
EBUQCName: string
EBUQCVersion: string
EBUQCVersion: string
Status: PublicationStatusType
Status: PublicationStatusType
UsableAs: List of UsableAsType
UsableAs: List of UsableAsType
AnalysisMethod [0..1]: AnalysisMethodType
AnalysisMethod [0..1]: AnalysisMethodType
Description [0..1]: string
Description [0..1]: string
Definition: string
Definition: string
Remarks [0..1]: string
Remarks [0..1]: string
Layer: LayerType
Layer: LayerType
Category: CategoryType
Category: CategoryType
EssenceType: EssenceType
EssenceType: EssenceType
Aliases/Alias [0..*]: string
Aliases/Alias [0..*]: string
Tags/Tag [0..*]: string
Tags/Tag [0..*]: string
References/Reference [0..*]: ReferenceType
References/Reference [0..*]: ReferenceType
Examples/Example [0..*]: ExampleType
Examples/Example [0..*]: ExampleType
QCItemOutputGroup
QCItemOutputGroup
QCItemOutputValue
QCItemOutputValue
Value [0..1]: string
Value [0..1]: string
Annotation [0..1]: AnnotationType
Annotation [0..1]: AnnotationT...
Confidence [0..1]: decimal
Confidence [0..1]: decimal
Severity [0..1]: Integer
Severity [0..1]: Integer
VerificationMedia [0..1]: anyURI
VerificationMedia [0..1]: anyU...
Aliases [0..1]: List of anyURI
Aliases [0..1]: List of anyURI
QCItemInputDefinition
QCItemInputDefinition
Name: string
Name: string
Description: string
Description: string
Remarks [0..1]: string
Remarks [0..1]: string
HasLocator: boolean
HasLocator: boolean
InReports: CardinalityType
InReports: CardinalityType
InChecks: CardinalityType
InChecks: CardinalityType
QCItemInputGroupDefinition
QCItemInputGroupDefin...
QCItemInputValueDefinition
QCItemInputValueDefinition
DefaultValue [0..1]: string
DefaultValue [0..1]: string
ValueRange [0..1]: RangeType
ValueRange [0..1]: RangeType
Type [0..1]: DatatypeType
Type [0..1]: DatatypeType
Unit [0..1]: UnitType
Unit [0..1]: UnitType
Representation [0..1]: RepresentationType
Representation [0..1]: RepresentationTy...
0..*
0..*
QCItemOutputDefinition
QCItemOutputDefinition
Name: string
Name: string
Description: string
Description: string
Remarks [0..1]: string
Remarks [0..1]: string
HasLocator: boolean
HasLocator: boolean
InReports: CardinalityType
InReports: CardinalityType
InChecks: CardinalityType
InChecks: CardinalityType
QCItemOutputGroupDefinition
QCItemOutputGroupDefinit...
QCItemOutputValueDefinition
QCItemOutputValueDefinition
ValueRange [0..1]: RangeType
ValueRange [0..1]: RangeType
Type [0..1]: DatatypeType
Type [0..1]: DatatypeType
Unit [0..1]: UnitType
Unit [0..1]: UnitType
Representation [0..1]: RepresentationType
Representation [0..1]: RepresentationT...
Aliases [0..1]: List of anyURI
Aliases [0..1]: List of anyURI
0..*
0..*
0..*
0..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
Text is not SVG - cannot display
\ No newline at end of file +
Report
Report
Item Definitions
Item Definitions
Profile
Profile
0..*
0..*
QCProfile
QCProfile
ID: UUIDType
ID: UUIDType
Name [0..1]: string
Name [0..1]: string
CheckResultRule [0..1]: RuleType
CheckResultRule [0..1]: RuleType
Description [0..1]: string
Description [0..1]: string
Scopes/Scope [0..*]: LocatorType
Scopes/Scope [0..*]: LocatorType
RelevanceLevel [0..1]: Integer
RelevanceLevel [0..1]: Integer
ContentId/ContentIdentifier [1..*]: ContentIdentifierType
ContentId/ContentIdentifier [1..*]: ContentIdenti...
Requestor [0..1]: OperatorType
Requestor [0..1]: OperatorType
DueDate [0..1]: dateTime
DueDate [0..1]: dateTime
QCReport
QCReport
ReportId: UUIDType

ReportId: UUIDType
ExecutionStatus: ExecutionStatusType


ExecutionStatus: ExecutionStatusType...
ErrorDescription [0..1]: string


ErrorDescription [0..1]: string...
CheckResult [0..1]: Boolean

CheckResult [0..1]: Boolean
LastModifiedDateTime: dateTime

LastModifiedDateTime: dateTime
ReportGroupId [0..1]: string

ReportGroupId [0..1]: string
ToolInformation [0..1]: ToolInformationType

ToolInformation [0..1]: ToolInformationType
OverallAnalysisDuration [0..1]: duration

OverallAnalysisDuration [0..1]: duration
ContentId/ContentIdentifier [1..*]: ContentIdentifierType

ContentId/ContentIdentifier [1..*]: ContentIdentif...
ReportCreator [0..1]: OperatorType

ReportCreator [0..1]: OperatorType
QCItem
QCItem
EBUQCID: string
EBUQCID: string
EBUQCName [0..1]: string
EBUQCName [0..1]: string
EBUQCVersion: string
EBUQCVersion: string
InstanceId [0..1]: UUIDType
InstanceId [0..1]: UUIDType
UsedAs [0..1]: UsableAsType
UsedAs [0..1]: UsableAsType
Relevance [0..1]: Integer
Relevance [0..1]: Integer
Scopes/Scope [0..*]: LocatorType
Scopes/Scope [0..*]: LocatorTy...
Track [0..1]: string
Track [0..1]: string
0..*
0..*
QCItemInput
QCItemInput
Name: string
Name: string
Locator [0..1]: LocatorType
Locator [0..1]: LocatorType
Track [0..1]: string
Track [0..1]: string
WrapperLocation [0..1]: WrapperLocationType
WrapperLocation [0..1]: WrapperLocationType
Value [0..1]: string
Value [0..1]: string
0..*
0..*
QCItemResult
QCItemResult
EBUQCID: string
EBUQCID: string
EBUQCName [0..1]: string
EBUQCName [0..1]: string
EBUQCVersion: string
EBUQCVersion: string
InstanceId [0..1]: UUIDType
InstanceId [0..1]: UUIDType
ExecutionStatus: ExecutionStatusType
ExecutionStatus: ExecutionStatusType
ErrorDescription [0..1]: string
ErrorDescription [0..1]: string
CheckResult [0..1]: boolean
CheckResult [0..1]: boolean
ResultDescription [0..1]: string
ResultDescription [0..1]: string
Relevance [0..1]: Integer
Relevance [0..1]: Integer
ToolInformation [0..1]: ToolInformationType
ToolInformation [0..1]: ToolInformationType
Annotation [0..1]: AnnotationType
Annotation [0..1]: AnnotationType
MaxSeverity [0..1]: Integer
MaxSeverity [0..1]: Integer
VerificationMedia [0..1]: anyURI
VerificationMedia [0..1]: anyURI
DetectionMethod [0..1]: DetectionMethodType
DetectionMethod [0..1]: DetectionMethodType
Revision [0..1]: Integer
Revision [0..1]: Integer
CreationDateTime [0..1]: dateTime
CreationDateTime [0..1]: dateTime
Operator [0..1]: OperatorType
Operator [0..1]: OperatorType
AnalysisMethodUsed: AnalysisMethodType
AnalysisMethodUsed: AnalysisMethodType
QCItemOutput
QCItemOutput
Name: string
Name: string
Locator [0..1]: LocatorType
Locator [0..1]: LocatorType
Track [0..1]: string
Track [0..1]: string
WrapperLocation [0..1]: WrapperLocationType
WrapperLocation [0..1]: WrapperLocationType
Value [0..1]: string
Value [0..1]: string
Annotation [0..1]: AnnotationType
Annotation [0..1]: AnnotationType
VerificationMedia [0..1]: anyURI
VerificationMedia [0..1]: anyURI
Confidence [0..1]: decimal
Confidence [0..1]: decimal
Severity [0..1]: Integer
Severity [0..1]: Integer
Aliases [0..1]: List of anyURI
Aliases [0..1]: List of anyURI
0..*
0..*
QCItemDefinition
QCItemDefinition
EBUQCID: string
EBUQCID: string
EBUQCName: string
EBUQCName: string
EBUQCVersion: string
EBUQCVersion: string
Status: PublicationStatusType
Status: PublicationStatusType
UsableAs: List of UsableAsType
UsableAs: List of UsableAsType
AnalysisMethod [0..1]: AnalysisMethodType
AnalysisMethod [0..1]: AnalysisMethodType
Description [0..1]: string
Description [0..1]: string
Definition: string
Definition: string
CheckResultDefinition [0..1]: string
CheckResultDefinition [0..1]: string
Remarks [0..1]: string
Remarks [0..1]: string
Layer: LayerType
Layer: LayerType
Category: CategoryType
Category: CategoryType
EssenceType: EssenceType
EssenceType: EssenceType
Aliases/Alias [0..*]: string
Aliases/Alias [0..*]: string
Tags/Tag [0..*]: string
Tags/Tag [0..*]: string
References/Reference [0..*]: ReferenceType
References/Reference [0..*]: ReferenceType
Examples/Example [0..*]: ExampleType
Examples/Example [0..*]: ExampleType
QCItemInputDefinition
QCItemInputDefinition
Name: string
Name: string
Description: string
Description: string
Remarks [0..1]: string
Remarks [0..1]: string
HasLocatorTemporal: boolean
HasLocatorTemporal: boolean
HasLocatorSpatial: boolean
HasLocatorSpatial: boolean
HasTrack: boolean
HasTrack: boolean
HasWrapperLocation: boolean
HasWrapperLocation: boolean
InReports: CardinalityType
InReports: CardinalityType
InChecks: CardinalityType
InChecks: CardinalityType
DefaultValue [0..1]: string
DefaultValue [0..1]: string
ValueRange [0..1]: RangeType
ValueRange [0..1]: RangeType
Type [0..1]: DatatypeType
Type [0..1]: DatatypeType
Unit [0..1]: UnitType
Unit [0..1]: UnitType
Representation [0..1]: RepresentationType
Representation [0..1]: RepresentationTy...
0..*
0..*
QCItemOutputDefinition
QCItemOutputDefinition
Name: string
Name: string
Description: string
Description: string
Remarks [0..1]: string
Remarks [0..1]: string
HasLocatorTemporal: boolean
HasLocatorTemporal: boolean
HasLocatorSpatial: boolean
HasLocatorSpatial: boolean
HasTrack: boolean
HasTrack: boolean
HasWrapperLocation: boolean
HasWrapperLocation: boolean
InReports: CardinalityType
InReports: CardinalityType
InChecks: CardinalityType
InChecks: CardinalityType
Aliases [0..1]: List of anyURI
Aliases [0..1]: List of anyURI
ValueRange [0..1]: RangeType
ValueRange [0..1]: RangeType
Type [0..1]: DatatypeType
Type [0..1]: DatatypeType
Unit [0..1]: UnitType
Unit [0..1]: UnitType
Representation [0..1]: RepresentationType
Representation [0..1]: RepresentationT...
0..*
0..*
0..*
0..*
0..*
0..*
0..*
0..*
0..*
0..*
0..*
0..*
Text is not SVG - cannot display
\ No newline at end of file