From 615c3ef4e234e80ae9d723306c1aff5d4cea4f65 Mon Sep 17 00:00:00 2001 From: "OD-T14S-25\\PCUser" Date: Fri, 30 Jan 2026 10:50:26 +0100 Subject: [PATCH 01/11] getHTML() for anEntity and aPackage implemented. With all probability, the styles must be refined and perhaps the content as well. --- src/utils/schemas/pig/ts/pig-metaclasses.ts | 77 ++++++++++++++++++++- 1 file changed, 74 insertions(+), 3 deletions(-) diff --git a/src/utils/schemas/pig/ts/pig-metaclasses.ts b/src/utils/schemas/pig/ts/pig-metaclasses.ts index b4b85b6..18c258f 100644 --- a/src/utils/schemas/pig/ts/pig-metaclasses.ts +++ b/src/utils/schemas/pig/ts/pig-metaclasses.ts @@ -912,8 +912,48 @@ export class AnEntity extends AnElement implements IAnEntity { return this; } getHTML(options?: object): stringHTML { - // ToDo: implement a HTML representation of the entity including its properties - return '
not implemented yet
'; + if (!this.lastStatus.ok) return '
Invalid entity
'; + + const titleText = this.title?.[0]?.value || ''; + const descText = this.description?.[0]?.value || ''; + + // Build properties HTML + let propertiesHTML = ''; + if (this.hasProperty && this.hasProperty.length > 0) { + propertiesHTML = '

Properties

'; + for (const prop of this.hasProperty) { + const propData = prop.get(); + if (propData && propData.hasClass) { + const propValue = propData.value || propData.idRef || '—'; + propertiesHTML += `
${propData.hasClass}
${propValue}
`; + } + } + propertiesHTML += '
'; + } + + // Build metadata HTML + const metadataHTML = `
+

Metadata

+
+
ID
${this.id}
+
Class
${this.hasClass || '—'}
+
Revision
${this.revision}
+
Modified
${new Date(this.modified).toLocaleString('en-US')}
+ ${this.creator ? `
Creator
${this.creator}
` : ''} + ${this.priorRevision && this.priorRevision.length > 0 ? `
Prior Revisions
${this.priorRevision.join(', ')}
` : ''} +
+
`; + + return `
+
+ ${titleText ? `

${titleText}

` : ''} + ${descText ? `
${descText}
` : ''} +
+
+ ${propertiesHTML} + ${metadataHTML} +
+
`; } } @@ -1235,7 +1275,38 @@ export class APackage extends Identifiable implements IAPackage { return this; } getHTML(options?: object): stringHTML[] { - return ['
not implemented yet
']; + if (!this.lastStatus.ok) { + return ['
Invalid package
']; + } + + const result: stringHTML[] = []; + + // 1. Package metadata as first element + const titleText = this.title?.[0]?.value || 'Untitled Package'; + const descText = this.description?.[0]?.value || ''; + + const packageMetadata = `
+

${titleText}

+ ${descText ? `
${descText}
` : ''} +
+
ID
${this.id}
+ ${this.modified ? `
Modified
${new Date(this.modified).toLocaleString('en-US')}
` : ''} + ${this.creator ? `
Creator
${this.creator}
` : ''} +
Items in Graph
${this.graph.length}
+
+
`; + + result.push(packageMetadata); + + // 2. Add HTML for all anEntity items + for (const item of this.graph) { + if (item.itemType === PigItemType.anEntity) { + const entityHTML = (item as AnEntity).getHTML(options); + result.push(entityHTML); + } + } + + return result; } /** * Extract all items from an instantiated APackage with status validation From 50ff4246fbdcbce3ae3ba6967521ec3d03d1a5fa Mon Sep 17 00:00:00 2001 From: "OD-T14S-25\\PCUser" Date: Fri, 30 Jan 2026 11:13:50 +0100 Subject: [PATCH 02/11] now with test-suite for aPackage.getHTML. --- tests/unit/pig-package-gethtml.spec.ts | 343 +++++++++++++++++++++++++ 1 file changed, 343 insertions(+) create mode 100644 tests/unit/pig-package-gethtml.spec.ts diff --git a/tests/unit/pig-package-gethtml.spec.ts b/tests/unit/pig-package-gethtml.spec.ts new file mode 100644 index 0000000..fca4c8f --- /dev/null +++ b/tests/unit/pig-package-gethtml.spec.ts @@ -0,0 +1,343 @@ +/*! + * JEST Test Suite for PIG Package getHTML() Method + * Copyright 2025 GfSE (https://gfse.org) + * License and terms of use: Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0) + */ + +import { APackage, PigItemType } from '../../src/utils/schemas/pig/ts/pig-metaclasses'; + +describe('PIG Package getHTML() Method', () => { + describe('Valid Package with Single Entity', () => { + test('should return array of HTML strings with package metadata and entity', () => { + const validPackageWithEntity = { + '@context': { + 'pig': 'https://product-information-graph.gfse.org/', + 'dcterms': 'http://purl.org/dc/terms/', + 'sh': 'http://www.w3.org/ns/shacl#', + 'o': 'https://example.org/ontology/', + 'd': 'https://example.org/data/' + }, + '@id': 'd:test-package-html', + 'pig:itemType': { '@id': 'pig:aPackage' }, + 'dcterms:title': [ + { '@value': 'Test Package', '@language': 'en' } + ], + 'dcterms:description': [ + { '@value': 'A test package for HTML generation', '@language': 'en' } + ], + 'dcterms:modified': '2025-01-30T10:00:00Z', + 'dcterms:creator': 'Test Creator', + '@graph': [ + { + '@id': 'o:Property_Status', + 'pig:specializes': 'pig:Property', + 'pig:itemType': { '@id': 'pig:Property' }, + 'dcterms:title': [ + { '@value': 'Status', '@language': 'en' } + ], + 'sh:datatype': { '@id': 'xs:string' } + }, + { + '@id': 'o:Entity_Requirement', + 'pig:specializes': 'pig:Entity', + 'pig:itemType': { '@id': 'pig:Entity' }, + 'dcterms:title': [ + { '@value': 'Requirement', '@language': 'en' } + ] + }, + { + '@id': 'd:REQ-001', + '@type': 'o:Entity_Requirement', + 'pig:itemType': { '@id': 'pig:anEntity' }, + 'pig:revision': '1.0', + 'dcterms:modified': '2025-01-30T10:00:00Z', + 'dcterms:creator': 'John Doe', + 'dcterms:title': [ + { '@value': 'System shall be secure', '@language': 'en' } + ], + 'dcterms:description': [ + { '@value': 'The system must implement security measures', '@language': 'en' } + ], + 'o:Property_Status': [ + { + 'pig:itemType': { '@id': 'pig:aProperty' }, + '@value': 'Draft' + } + ] + } + ] + }; + + const pkg = new APackage().setJSONLD(validPackageWithEntity); + + expect(pkg.status().ok).toBe(true); + + const htmlList = pkg.getHTML(); + + // Should return an array + expect(Array.isArray(htmlList)).toBe(true); + + // Should have 2 elements: package metadata + 1 entity + expect(htmlList.length).toBe(2); + + // First element: Package metadata + const packageHTML = htmlList[0]; + expect(typeof packageHTML).toBe('string'); + expect(packageHTML).toContain('pig-package-metadata'); + expect(packageHTML).toContain('Test Package'); + expect(packageHTML).toContain('A test package for HTML generation'); + expect(packageHTML).toContain('d:test-package-html'); + expect(packageHTML).toContain('Test Creator'); + expect(packageHTML).toContain('Items in Graph'); + expect(packageHTML).toContain('3'); // 1 Property + 1 Entity + 1 anEntity + + // Should NOT contain context + expect(packageHTML).not.toContain('@context'); + expect(packageHTML).not.toContain('https://product-information-graph.gfse.org/'); + + // Second element: Entity HTML + const entityHTML = htmlList[1]; + expect(typeof entityHTML).toBe('string'); + expect(entityHTML).toContain('pig-entity'); + expect(entityHTML).toContain('System shall be secure'); + expect(entityHTML).toContain('The system must implement security measures'); + expect(entityHTML).toContain('d:REQ-001'); + expect(entityHTML).toContain('o:Entity_Requirement'); + expect(entityHTML).toContain('1.0'); // revision + expect(entityHTML).toContain('John Doe'); + expect(entityHTML).toContain('o:Property_Status'); + expect(entityHTML).toContain('Draft'); + }); + + test('should return only package metadata when no entities present', () => { + const packageWithoutEntities = { + '@context': { + 'pig': 'https://product-information-graph.gfse.org/', + 'dcterms': 'http://purl.org/dc/terms/', + 'sh': 'http://www.w3.org/ns/shacl#', + 'o': 'https://example.org/ontology/' + }, + '@id': 'd:package-no-entities', + 'pig:itemType': { '@id': 'pig:aPackage' }, + 'dcterms:title': [ + { '@value': 'Empty Package', '@language': 'en' } + ], + 'dcterms:modified': '2025-01-30T10:00:00Z', + '@graph': [ + { + '@id': 'o:Property_Name', + 'pig:specializes': 'pig:Property', + 'pig:itemType': { '@id': 'pig:Property' }, + 'dcterms:title': [ + { '@value': 'Name', '@language': 'en' } + ], + 'sh:datatype': { '@id': 'xs:string' } + } + ] + }; + + const pkg = new APackage().setJSONLD(packageWithoutEntities); + + expect(pkg.status().ok).toBe(true); + + const htmlList = pkg.getHTML(); + + // Should have only 1 element (package metadata) + expect(htmlList.length).toBe(1); + + const packageHTML = htmlList[0]; + expect(packageHTML).toContain('Empty Package'); + expect(packageHTML).toContain('Items in Graph'); + expect(packageHTML).toContain('1'); // Only 1 Property + }); + + test('should ignore non-entity items (Property, Link, Relationship)', () => { + const packageWithMixedItems = { + '@context': { + 'pig': 'https://product-information-graph.gfse.org/', + 'dcterms': 'http://purl.org/dc/terms/', + 'sh': 'http://www.w3.org/ns/shacl#', + 'o': 'https://example.org/ontology/', + 'd': 'https://example.org/data/' + }, + '@id': 'd:package-mixed', + 'pig:itemType': { '@id': 'pig:aPackage' }, + 'dcterms:title': [ + { '@value': 'Mixed Package', '@language': 'en' } + ], + 'dcterms:modified': '2025-01-30T10:00:00Z', + '@graph': [ + { + '@id': 'o:Property_Status', + 'pig:specializes': 'pig:Property', + 'pig:itemType': { '@id': 'pig:Property' }, + 'dcterms:title': [ + { '@value': 'Status', '@language': 'en' } + ], + 'sh:datatype': { '@id': 'xs:string' } + }, + { + '@id': 'o:Link_RefersTo', + 'pig:specializes': 'pig:Link', + 'pig:itemType': { '@id': 'pig:Link' }, + 'dcterms:title': [ + { '@value': 'Refers To', '@language': 'en' } + ], + 'pig:eligibleEndpoint': [ + { '@id': 'o:Entity_Requirement' } + ] + }, + { + '@id': 'o:Entity_Requirement', + 'pig:specializes': 'pig:Entity', + 'pig:itemType': { '@id': 'pig:Entity' }, + 'dcterms:title': [ + { '@value': 'Requirement', '@language': 'en' } + ] + }, + { + '@id': 'o:Relationship_Trace', + 'pig:specializes': 'pig:Relationship', + 'pig:itemType': { '@id': 'pig:Relationship' }, + 'dcterms:title': [ + { '@value': 'Trace', '@language': 'en' } + ] + }, + { + '@id': 'd:REQ-002', + '@type': 'o:Entity_Requirement', + 'pig:itemType': { '@id': 'pig:anEntity' }, + 'pig:revision': '1.0', + 'dcterms:modified': '2025-01-30T10:00:00Z', + 'dcterms:title': [ + { '@value': 'Test Entity', '@language': 'en' } + ] + } + ] + }; + + const pkg = new APackage().setJSONLD(packageWithMixedItems); + + expect(pkg.status().ok).toBe(true); + + const htmlList = pkg.getHTML(); + + // Package metadata + 1 entity (ignoring Property, Link, Entity class, Relationship) + expect(htmlList.length).toBe(2); + + expect(htmlList[0]).toContain('Mixed Package'); + expect(htmlList[1]).toContain('d:REQ-002'); + expect(htmlList[1]).toContain('Test Entity'); + }); + }); + + describe('Invalid Package', () => { + test('should return error HTML for invalid package', () => { + const invalidPackage = { + '@context': { + 'pig': 'https://product-information-graph.gfse.org/' + }, + '@id': 'd:invalid-package', + 'pig:itemType': { '@id': 'pig:aPackage' }, + '@graph': [] // Empty graph - invalid! + }; + + const pkg = new APackage().setJSONLD(invalidPackage); + + expect(pkg.status().ok).toBe(false); + + const htmlList = pkg.getHTML(); + + expect(htmlList.length).toBe(1); + expect(htmlList[0]).toContain('pig-error'); + expect(htmlList[0]).toContain('Invalid package'); + }); + }); + + describe('Multiple Entities', () => { + test('should return HTML for all entities in package', () => { + const packageWithMultipleEntities = { + '@context': { + 'pig': 'https://product-information-graph.gfse.org/', + 'dcterms': 'http://purl.org/dc/terms/', + 'sh': 'http://www.w3.org/ns/shacl#', + 'o': 'https://example.org/ontology/', + 'd': 'https://example.org/data/' + }, + '@id': 'd:package-multiple', + 'pig:itemType': { '@id': 'pig:aPackage' }, + 'dcterms:title': [ + { '@value': 'Multi-Entity Package', '@language': 'en' } + ], + 'dcterms:modified': '2025-01-30T10:00:00Z', + '@graph': [ + { + '@id': 'o:Entity_Requirement', + 'pig:specializes': 'pig:Entity', + 'pig:itemType': { '@id': 'pig:Entity' }, + 'dcterms:title': [ + { '@value': 'Requirement', '@language': 'en' } + ] + }, + { + '@id': 'd:REQ-001', + '@type': 'o:Entity_Requirement', + 'pig:itemType': { '@id': 'pig:anEntity' }, + 'pig:revision': '1.0', + 'dcterms:modified': '2025-01-30T10:00:00Z', + 'dcterms:title': [ + { '@value': 'First Requirement', '@language': 'en' } + ] + }, + { + '@id': 'd:REQ-002', + '@type': 'o:Entity_Requirement', + 'pig:itemType': { '@id': 'pig:anEntity' }, + 'pig:revision': '1.1', + 'dcterms:modified': '2025-01-30T11:00:00Z', + 'dcterms:title': [ + { '@value': 'Second Requirement', '@language': 'en' } + ] + }, + { + '@id': 'd:REQ-003', + '@type': 'o:Entity_Requirement', + 'pig:itemType': { '@id': 'pig:anEntity' }, + 'pig:revision': '2.0', + 'dcterms:modified': '2025-01-30T12:00:00Z', + 'dcterms:title': [ + { '@value': 'Third Requirement', '@language': 'en' } + ] + } + ] + }; + + const pkg = new APackage().setJSONLD(packageWithMultipleEntities); + + expect(pkg.status().ok).toBe(true); + + const htmlList = pkg.getHTML(); + + // 1 package metadata + 3 entities + expect(htmlList.length).toBe(4); + + // Check package metadata + expect(htmlList[0]).toContain('Multi-Entity Package'); + expect(htmlList[0]).toContain('Items in Graph'); + expect(htmlList[0]).toContain('4'); // 1 Entity class + 3 anEntity instances + + // Check entities + expect(htmlList[1]).toContain('First Requirement'); + expect(htmlList[1]).toContain('d:REQ-001'); + expect(htmlList[1]).toContain('1.0'); + + expect(htmlList[2]).toContain('Second Requirement'); + expect(htmlList[2]).toContain('d:REQ-002'); + expect(htmlList[2]).toContain('1.1'); + + expect(htmlList[3]).toContain('Third Requirement'); + expect(htmlList[3]).toContain('d:REQ-003'); + expect(htmlList[3]).toContain('2.0'); + }); + }); +}); From e79a6d701270b0714d2ca176b419bf9902f26de8 Mon Sep 17 00:00:00 2001 From: Oskar von Dungern Date: Fri, 30 Jan 2026 11:30:54 +0100 Subject: [PATCH 03/11] Update src/utils/schemas/pig/ts/pig-metaclasses.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/utils/schemas/pig/ts/pig-metaclasses.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/utils/schemas/pig/ts/pig-metaclasses.ts b/src/utils/schemas/pig/ts/pig-metaclasses.ts index 18c258f..bff7400 100644 --- a/src/utils/schemas/pig/ts/pig-metaclasses.ts +++ b/src/utils/schemas/pig/ts/pig-metaclasses.ts @@ -945,15 +945,15 @@ export class AnEntity extends AnElement implements IAnEntity { `; return `
-
- ${titleText ? `

${titleText}

` : ''} - ${descText ? `
${descText}
` : ''} -
-
- ${propertiesHTML} - ${metadataHTML} -
-
`; +
+ ${titleText ? `

${titleText}

` : ''} + ${descText ? `
${descText}
` : ''} +
+
+ ${propertiesHTML} + ${metadataHTML} +
+ `; } } From 274e03665cc1fe4af957fe46eda2f8da2059528f Mon Sep 17 00:00:00 2001 From: Oskar von Dungern Date: Fri, 30 Jan 2026 11:32:36 +0100 Subject: [PATCH 04/11] Update tests/unit/pig-package-gethtml.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- tests/unit/pig-package-gethtml.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/unit/pig-package-gethtml.spec.ts b/tests/unit/pig-package-gethtml.spec.ts index fca4c8f..c723acf 100644 --- a/tests/unit/pig-package-gethtml.spec.ts +++ b/tests/unit/pig-package-gethtml.spec.ts @@ -4,7 +4,7 @@ * License and terms of use: Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0) */ -import { APackage, PigItemType } from '../../src/utils/schemas/pig/ts/pig-metaclasses'; +import { APackage } from '../../src/utils/schemas/pig/ts/pig-metaclasses'; describe('PIG Package getHTML() Method', () => { describe('Valid Package with Single Entity', () => { From 7c06780b78920c381693976973f7f53b48dfbb1c Mon Sep 17 00:00:00 2001 From: "OD-T14S-25\\PCUser" Date: Fri, 30 Jan 2026 16:51:52 +0100 Subject: [PATCH 05/11] Reworked getHTML following Review suggestions. --- src/utils/lib/helpers.ts | 10 +- src/utils/schemas/pig/ts/pig-metaclasses.ts | 281 +++++++++++--------- tests/unit/pig-package-gethtml.spec.ts | 4 +- 3 files changed, 155 insertions(+), 140 deletions(-) diff --git a/src/utils/lib/helpers.ts b/src/utils/lib/helpers.ts index 5f82d90..729f3e1 100644 --- a/src/utils/lib/helpers.ts +++ b/src/utils/lib/helpers.ts @@ -54,15 +54,6 @@ export const XML_NAMESPACES = Object.entries(NAMESPACE_MAP) // LIB object with helper methods export const LIB = { -/* createRsp(status: number, statusText?: string, response?: T, responseType?: XMLHttpRequestResponseType): IRsp { - return { - status: status, - statusText: statusText, - response: response, - responseType: responseType, - ok: status > 199 && status < 300 || status === 0 - }; - }, */ isLeaf(node: JsonValue): boolean { return (typeof node === 'string' || typeof node === 'number' || typeof node === 'boolean'); @@ -243,6 +234,7 @@ export const LIB = { } return value; }, + /** * Wrap XML fragment with root element and namespace declarations * @param xml - XML fragment (without root wrapper) diff --git a/src/utils/schemas/pig/ts/pig-metaclasses.ts b/src/utils/schemas/pig/ts/pig-metaclasses.ts index bff7400..0afdd57 100644 --- a/src/utils/schemas/pig/ts/pig-metaclasses.ts +++ b/src/utils/schemas/pig/ts/pig-metaclasses.ts @@ -110,6 +110,11 @@ export interface ILanguageText { export interface IText { value: string; } +export interface IOptionsHTML { + widthLeft?: string; // e.g. '150px' or '67%' + itemType?: PigItemTypeValue[]; + lang?: tagIETF; +} ////////////////////////////////////// // The abstract classes: @@ -583,7 +588,7 @@ export class Entity extends Element implements IEntity { validate(itm: IEntity) { // Schema validation (AJV) - provides structural checks and reuses the idString definition // ... only at the lowest subclass level: - logger.debug('Entity.validate: ', itm); + // logger.debug('Entity.validate: ', itm); try { const ok = SCH.validateEntitySchema(itm); if (!ok) { @@ -911,11 +916,15 @@ export class AnEntity extends AnElement implements IAnEntity { return this.set(this.lastStatus.response as IAnEntity); return this; } - getHTML(options?: object): stringHTML { + getHTML(options?: IOptionsHTML): stringHTML { if (!this.lastStatus.ok) return '
Invalid entity
'; - const titleText = this.title?.[0]?.value || ''; - const descText = this.description?.[0]?.value || ''; + // Extract language preference from options, default to 'en-US' + const lang = options?.lang || 'en-US'; + const widthLeft = options?.widthLeft || '67%'; + + const titleText = getLocalText(this.title, lang); + const descText = getLocalText(this.description, lang); // Build properties HTML let propertiesHTML = ''; @@ -924,36 +933,36 @@ export class AnEntity extends AnElement implements IAnEntity { for (const prop of this.hasProperty) { const propData = prop.get(); if (propData && propData.hasClass) { - const propValue = propData.value || propData.idRef || '—'; - propertiesHTML += `
${propData.hasClass}
${propValue}
`; + const propValue = passifyHTML(propData.value || propData.idRef || '—'); + const propClass = passifyHTML(propData.hasClass); + propertiesHTML += `
${propClass}
${propValue}
`; } } propertiesHTML += ''; } - // Build metadata HTML + // Build metadata HTML with localized date const metadataHTML = ``; - return `
-
- ${titleText ? `

${titleText}

` : ''} - ${descText ? `
${descText}
` : ''} -
-
- ${propertiesHTML} - ${metadataHTML} -
-
`; + return `
+
+ ${titleText ? `

${titleText}

` : ''} + ${descText ? `
${descText}
` : ''} +
+
+ ${propertiesHTML} + ${metadataHTML} +
+
`; } } @@ -1274,31 +1283,49 @@ export class APackage extends Identifiable implements IAPackage { // logger.debug(`APackage.setXML: package ${JSON.stringify(this,null,2)} set with status`, this.lastStatus); return this; } - getHTML(options?: object): stringHTML[] { + getHTML(options?: IOptionsHTML): stringHTML[] { if (!this.lastStatus.ok) { - return ['
Invalid package
']; + return [`
Invalid package; status: (${this.lastStatus.status}) ${passifyHTML(this.lastStatus.statusText || '')}
`]; } const result: stringHTML[] = []; - // 1. Package metadata as first element - const titleText = this.title?.[0]?.value || 'Untitled Package'; - const descText = this.description?.[0]?.value || ''; - - const packageMetadata = ``; */ - result.push(packageMetadata); - - // 2. Add HTML for all anEntity items + // 2. Add HTML for all anEntity items (options are passed through) for (const item of this.graph) { if (item.itemType === PigItemType.anEntity) { const entityHTML = (item as AnEntity).getHTML(options); @@ -2657,102 +2684,98 @@ function isMultiLanguageText(propertyName: string): boolean { return multiLangFields.has(localName) || multiLangFields.has(propertyName); } -/** - * Parse XML string and convert to JSON object - * @param xml - XML string to parse - * @returns IRsp with JsonObject on success, error message on failure - * -function xml2json(xml: stringXML): IRsp { - try { - logger.debug('xml2json: parsing ',xml); +// Helper function to get localized text from multi-language array +function getLocalText(texts?: ILanguageText[], lang?: TISODateString): string { + if (!texts || texts.length === 0) return ''; - // Parse XML string - const parser = new DOMParser(); - const doc = parser.parseFromString(xml, 'text/xml'); - - // Check for parsing errors - const parserError = doc.querySelector('parsererror'); - if (parserError) { - const errorMessage = parserError.textContent || 'Unknown XML parsing error'; - logger.error('xml2json: XML parsing failed:', errorMessage); - return Msg.create(690, 'XML', errorMessage); - } - - // Get root element - const rootElement = doc.documentElement; - if (!rootElement) { - return Msg.create(690, 'XML', 'No root element found in XML'); - } + lang = lang ?? 'en-US'; - // Extract data from XML element - const result: any = {}; + // Try to find exact language match + const exact = texts.find(t => t.lang === lang); + if (exact) return passifyHTML(exact.value); - // Extract id from attribute - if (rootElement.hasAttribute('id')) { - result.id = rootElement.getAttribute('id'); - } - - // Extract itemType from element name (e.g., pig:Property -> pig:Property) - const tagName = rootElement.tagName; - if (tagName.includes(':')) { - result.itemType = tagName; - } else { - result.itemType = tagName; - } + // Try to find language prefix match (e.g., 'en' for 'en-US') + const langPrefix = lang.split('-')[0]; + const prefixMatch = texts.find(t => t.lang?.startsWith(langPrefix)); + if (prefixMatch) return passifyHTML(prefixMatch.value); - // Extract rdf:type attribute if present (for hasClass) - if (rootElement.hasAttribute('rdf:type')) { - result.hasClass = rootElement.getAttribute('rdf:type'); - } - - // Extract specializes from rdfs:subClassOf or rdfs:subPropertyOf - const subClassOf = rootElement.querySelector('rdfs\\:subClassOf, [*|subClassOf]'); - if (subClassOf && subClassOf.textContent) { - result.specializes = subClassOf.textContent.trim(); - } - const subPropertyOf = rootElement.querySelector('rdfs\\:subPropertyOf, [*|subPropertyOf]'); - if (subPropertyOf && subPropertyOf.textContent) { - result.specializes = subPropertyOf.textContent.trim(); - } - - // Extract multi-language title elements - const titleElements = rootElement.querySelectorAll('dcterms\\:title, [*|title]'); - if (titleElements.length > 0) { - result.title = Array.from(titleElements).map(el => { - const langAttr = el.getAttribute('xml:lang') || el.getAttribute('lang'); - return { - value: el.textContent?.trim() || '', - ...(langAttr && { lang: langAttr }) - }; - }); - } - - // Extract multi-language description elements - const descriptionElements = rootElement.querySelectorAll('dcterms\\:description, [*|description]'); - if (descriptionElements.length > 0) { - result.description = Array.from(descriptionElements).map(el => { - const langAttr = el.getAttribute('xml:lang') || el.getAttribute('lang'); - return { - value: el.textContent?.trim() || '', - ...(langAttr && { lang: langAttr }) - }; - }); - } - - logger.debug('xml2json: successfully parsed XML'); - - // Return success with parsed result - return { - ...rspOK, - response: result as JsonObject, - responseType: 'json' - }; + // Fallback to first available text + return passifyHTML(texts[0].value); +} - } catch (err: any) { - logger.error('xml2json: exception:', err); - return Msg.create(690, 'XML', err?.message ?? String(err)); +// Format date using the specified locale +function getLocalDate(dateStr: string, lang?: TISODateString): string { + try { + return new Date(dateStr).toLocaleString(lang ?? 'en-US'); + } catch { + return dateStr; } -} */ +} +/** + * Sanitize HTML by removing dangerous elements and attributes that could execute code + * Preserves safe XHTML formatting (p, div, span, strong, em, etc.) + * Removes: '; + * const safe = passifyHTML(unsafe); + * // Returns: '

Text

' + */ +function passifyHTML(html: string): string { + if (!html || typeof html !== 'string') return ''; + + let passified = html; + + // 1. Remove dangerous tags including their content + const dangerousTags = [ + 'script', + 'style', + 'embed', + 'iframe', + // 'object', + 'link', + 'meta', + 'base', + 'form' + ]; + + dangerousTags.forEach(tag => { + // Remove tags with any attributes (case-insensitive, multiline, greedy) + const regex = new RegExp(`<${tag}[^>]*>.*?<\\/${tag}>`, 'gis'); + passified = passified.replace(regex, ''); + // Remove self-closing tags + const selfClosing = new RegExp(`<${tag}[^>]*\\/?>`, 'gi'); + passified = passified.replace(selfClosing, ''); + }); + + // 2. Remove event handler attributes (onXYZ="...") + // Matches on followed by word characters, capturing until the closing quote + passified = passified.replace(/\s+on\w+\s*=\s*["'][^"']*["']/gi, ''); + + // 3. Remove dangerous protocols from href and src attributes + // Replace javascript: and data: with # (safer than removing the attribute) + passified = passified.replace(/\s+(href|src)\s*=\s*["']\s*(javascript|data):[^"']*["']/gi, ' $1="#"'); + + // 4. Remove dangerous attributes + const dangerousAttrs = [ + 'formaction', + 'action', + 'dynsrc', + 'lowsrc' + ]; + + dangerousAttrs.forEach(attr => { + const regex = new RegExp(`\\s+${attr}\\s*=\\s*["'][^"']*["']`, 'gi'); + passified = passified.replace(regex, ''); + }); + + return passified; +} /** * Replace top-level string values that are valid id-strings with id-objects. * - Non-recursive (flat): only replaces direct properties of the provided object. diff --git a/tests/unit/pig-package-gethtml.spec.ts b/tests/unit/pig-package-gethtml.spec.ts index c723acf..3a12c10 100644 --- a/tests/unit/pig-package-gethtml.spec.ts +++ b/tests/unit/pig-package-gethtml.spec.ts @@ -83,7 +83,7 @@ describe('PIG Package getHTML() Method', () => { // First element: Package metadata const packageHTML = htmlList[0]; expect(typeof packageHTML).toBe('string'); - expect(packageHTML).toContain('pig-package-metadata'); + expect(packageHTML).toContain('pig-apackage'); expect(packageHTML).toContain('Test Package'); expect(packageHTML).toContain('A test package for HTML generation'); expect(packageHTML).toContain('d:test-package-html'); @@ -98,7 +98,7 @@ describe('PIG Package getHTML() Method', () => { // Second element: Entity HTML const entityHTML = htmlList[1]; expect(typeof entityHTML).toBe('string'); - expect(entityHTML).toContain('pig-entity'); + expect(entityHTML).toContain('pig-anentity'); expect(entityHTML).toContain('System shall be secure'); expect(entityHTML).toContain('The system must implement security measures'); expect(entityHTML).toContain('d:REQ-001'); From dfffea883553fcd80280a6e0251dafd35fbd1691 Mon Sep 17 00:00:00 2001 From: "OD-T14S-25\\PCUser" Date: Fri, 30 Jan 2026 19:14:16 +0100 Subject: [PATCH 06/11] minor change in comment --- src/utils/schemas/pig/ts/pig-package-constraints.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utils/schemas/pig/ts/pig-package-constraints.ts b/src/utils/schemas/pig/ts/pig-package-constraints.ts index 340b792..3ac8e24 100644 --- a/src/utils/schemas/pig/ts/pig-package-constraints.ts +++ b/src/utils/schemas/pig/ts/pig-package-constraints.ts @@ -31,7 +31,6 @@ * ✅ aLink.hasClass → Link * anEntity and aRelationship class references * Entity and Relationship specializes references - * @type consistency * Phase 2 (important): * namespace prefixes are defined in the context * Enumeration value references From 1b170c8ab4e97939d4c6c9f5613229947a8ba8f6 Mon Sep 17 00:00:00 2001 From: "OD-T14S-25\\PCUser" Date: Mon, 2 Feb 2026 11:44:33 +0100 Subject: [PATCH 07/11] - Added constraint checks on anEntity and aRelationship hasClass references - Can enable every single constraint check --- .../import/jsonld/import-package-jsonld.ts | 13 +- src/utils/import/xml/import-package-xml.ts | 16 +- src/utils/lib/messages.ts | 32 +- src/utils/schemas/pig/ts/pig-metaclasses.ts | 68 ++- .../schemas/pig/ts/pig-package-constraints.ts | 300 +++++++++++- tests/unit/import-package-jsonld.spec.ts | 2 +- tests/unit/pig-package-constraints.spec.ts | 448 +++++++++++++++++- tests/unit/pig-package-gethtml.spec.ts | 11 +- 8 files changed, 799 insertions(+), 91 deletions(-) diff --git a/src/utils/import/jsonld/import-package-jsonld.ts b/src/utils/import/jsonld/import-package-jsonld.ts index 78e0c25..761f4a4 100644 --- a/src/utils/import/jsonld/import-package-jsonld.ts +++ b/src/utils/import/jsonld/import-package-jsonld.ts @@ -23,6 +23,7 @@ import { IRsp, rspOK, Msg } from "../../lib/messages"; import { LIB, logger } from "../../lib/helpers"; import { APackage, TPigItem } from '../../schemas/pig/ts/pig-metaclasses'; import { SCH_LD } from '../../schemas/pig/jsonld/pig-schemata-jsonld'; +import { ConstraintCheckType } from '../../schemas/pig/ts/pig-package-constraints'; /** * Import JSON-LD document and instantiate PIG items @@ -53,7 +54,17 @@ export async function importJSONLD(source: string | File | Blob): Promise } // Instantiate APackage and load the document - const aPackage = new APackage().setJSONLD(doc); + const aPackage = new APackage().setJSONLD( + doc, + // some examples are incomplete, so we skip the tests for specializes: + [ + ConstraintCheckType.UniqueIds, + ConstraintCheckType.aPropertyHasClass, + ConstraintCheckType.aLinkHasClass, + ConstraintCheckType.anEntityHasClass, + ConstraintCheckType.aRelationshipHasClass, + ] + ); // Check if package was successfully created if (!aPackage.status().ok) { diff --git a/src/utils/import/xml/import-package-xml.ts b/src/utils/import/xml/import-package-xml.ts index eb58958..f35128c 100644 --- a/src/utils/import/xml/import-package-xml.ts +++ b/src/utils/import/xml/import-package-xml.ts @@ -22,6 +22,7 @@ import { IRsp, rspOK, Msg } from '../../lib/messages'; import { LIB, logger } from '../../lib/helpers'; import { APackage, TPigItem } from '../../schemas/pig/ts/pig-metaclasses'; +import { ConstraintCheckType } from '../../schemas/pig/ts/pig-package-constraints'; /** * Import XML document and instantiate PIG items @@ -60,8 +61,19 @@ export async function importXML(source: string | File | Blob): Promise { return Msg.create(697, 'XML', errors); } */ - // ✅ Instantiate APackage directly from XML string - const aPackage = new APackage().setXML(xmlString); + + // Instantiate APackage directly from XML string + const aPackage = new APackage().setXML( + xmlString, + // some examples are incomplete, so we skip the tests for specializes: + [ + ConstraintCheckType.UniqueIds, + ConstraintCheckType.aPropertyHasClass, + ConstraintCheckType.aLinkHasClass, + ConstraintCheckType.anEntityHasClass, + ConstraintCheckType.aRelationshipHasClass, + ] + ); // Check if package was successfully created if (!aPackage.status().ok) { diff --git a/src/utils/lib/messages.ts b/src/utils/lib/messages.ts index c9f323f..4598454 100644 --- a/src/utils/lib/messages.ts +++ b/src/utils/lib/messages.ts @@ -365,24 +365,24 @@ const messages: Record string>> `Error en la validación del paquete: elemento '${parentId}' hasProperty[${propIndex}].hasClass='${hasClass}' - ${msg}` }, 674: { - en: (parentId: string, linkIndex: number, linkArrayName: string, msg: string) => - `Package validation failed: item '${parentId}' ${linkArrayName}[${linkIndex}] has ${msg}`, - de: (parentId: string, linkIndex: number, linkArrayName: string, msg: string) => - `Paket-Validierung fehlgeschlagen: Element '${parentId}' ${linkArrayName}[${linkIndex}] hat ${msg}`, - fr: (parentId: string, linkIndex: number, linkArrayName: string, msg: string) => - `Échec de la validation du package: élément '${parentId}' ${linkArrayName}[${linkIndex}] a ${msg}`, - es: (parentId: string, linkIndex: number, linkArrayName: string, msg: string) => - `Error en la validación del paquete: elemento '${parentId}' ${linkArrayName}[${linkIndex}] tiene ${msg}` + en: (parentId: string, index: number, prpName: string, msg: string) => + `Package validation failed: item '${parentId}' graph[${index}] ${prpName} - ${msg}`, + de: (parentId: string, index: number, prpName: string, msg: string) => + `Paket-Validierung fehlgeschlagen: Element '${parentId}' graph[${index}] ${prpName} - ${msg}`, + fr: (parentId: string, index: number, prpName: string, msg: string) => + `Échec de la validation du package: élément '${parentId}' graph[${index}] ${prpName} - ${msg}`, + es: (parentId: string, index: number, prpName: string, msg: string) => + `Error en la validación del paquete: elemento '${parentId}' graph[${index}] ${prpName} - ${msg}` }, 675: { - en: (parentId: string, linkIndex: number, linkArrayName: string, hasClass: string, msg: string) => - `Package validation failed: item '${parentId}' ${linkArrayName}[${linkIndex}].hasClass='${hasClass}' - ${msg}`, - de: (parentId: string, linkIndex: number, linkArrayName: string, hasClass: string, msg: string) => - `Paket-Validierung fehlgeschlagen: Element '${parentId}' ${linkArrayName}[${linkIndex}].hasClass='${hasClass}' - ${msg}`, - fr: (parentId: string, linkIndex: number, linkArrayName: string, hasClass: string, msg: string) => - `Échec de la validation du package: élément '${parentId}' ${linkArrayName}[${linkIndex}].hasClass='${hasClass}' - ${msg}`, - es: (parentId: string, linkIndex: number, linkArrayName: string, hasClass: string, msg: string) => - `Error en la validación del paquete: elemento '${parentId}' ${linkArrayName}[${linkIndex}].hasClass='${hasClass}' - ${msg}` + en: (parentId: string, index: number, prpName: string, prpVal: string, msg: string) => + `Package validation failed: item '${parentId}' graph[${index}] ${prpName}: ${prpVal} - ${msg}`, + de: (parentId: string, index: number, prpName: string, prpVal: string, msg: string) => + `Paket-Validierung fehlgeschlagen: Element '${parentId}' graph[${index}] ${prpName}: ${prpVal} - ${msg}`, + fr: (parentId: string, index: number, prpName: string, prpVal: string, msg: string) => + `Échec de la validation du package: élément '${parentId}' graph[${index}] ${prpName}: ${prpVal} - ${msg}`, + es: (parentId: string, index: number, prpName: string, prpVal: string, msg: string) => + `Error en la validación del paquete: elemento '${parentId}' graph[${index}] ${prpName}: ${prpVal} - ${msg}` }, 679: { en: (op: string, act: number, exp: number) => diff --git a/src/utils/schemas/pig/ts/pig-metaclasses.ts b/src/utils/schemas/pig/ts/pig-metaclasses.ts index 0afdd57..4ab6a57 100644 --- a/src/utils/schemas/pig/ts/pig-metaclasses.ts +++ b/src/utils/schemas/pig/ts/pig-metaclasses.ts @@ -36,7 +36,7 @@ import { MVF } from "../../../lib/mvf"; import { JsonPrimitive, JsonValue, JsonArray, JsonObject } from "../../../lib/helpers"; // use central Ajv instance from the Vue plugin: import { SCH } from '../json/pig-schemata'; -import { checkConstraintsForPackage } from './pig-package-constraints'; +import { checkConstraintsForPackage, ConstraintCheckType } from './pig-package-constraints'; // optional: import type for better TS typing where needed export type TPigId = string; // an URI, typically a UUID with namespace (e.g. 'ns:123e4567-e89b-12d3-a456-426614174000') or a URL @@ -111,8 +111,8 @@ export interface IText { value: string; } export interface IOptionsHTML { - widthLeft?: string; // e.g. '150px' or '67%' - itemType?: PigItemTypeValue[]; + widthMain?: string; // width of the main column, e.g. '150px' or '67%' + itemType?: PigItemTypeValue[]; // itemTypes to include lang?: tagIETF; } @@ -921,7 +921,7 @@ export class AnEntity extends AnElement implements IAnEntity { // Extract language preference from options, default to 'en-US' const lang = options?.lang || 'en-US'; - const widthLeft = options?.widthLeft || '67%'; + const widthMain = options?.widthMain || '67%'; const titleText = getLocalText(this.title, lang); const descText = getLocalText(this.description, lang); @@ -954,7 +954,7 @@ export class AnEntity extends AnElement implements IAnEntity { `; return `
-
+
${titleText ? `

${titleText}

` : ''} ${descText ? `
${descText}
` : ''}
@@ -1061,7 +1061,7 @@ export class APackage extends Identifiable implements IAPackage { super({ itemType: PigItemType.aPackage }); } - validate(itm: IAPackage): IRsp { + validate(itm: IAPackage, checks?: ConstraintCheckType[] ): IRsp { // graph must be present and be an array if (!Array.isArray(itm.graph) || itm.graph.length < 1) { return Msg.create(630, 'graph'); @@ -1073,7 +1073,7 @@ export class APackage extends Identifiable implements IAPackage { return rsp; } - rsp = checkConstraintsForPackage(itm); + rsp = checkConstraintsForPackage(itm,checks); // if (itm.id == 'd:test-invalid-prop') // logger.debug(`APackage.validate: validating package `, itm, rsp); @@ -1084,8 +1084,8 @@ export class APackage extends Identifiable implements IAPackage { return rspOK; } - set(itm: IAPackage): APackage { - this.lastStatus = this.validate(itm); + set(itm: IAPackage, checks?: ConstraintCheckType[]): APackage { + this.lastStatus = this.validate(itm,checks); if (this.lastStatus.ok) { super.set(itm); this.context = itm.context; @@ -1114,7 +1114,7 @@ export class APackage extends Identifiable implements IAPackage { return LIB.stripUndefined(pkg); } - setJSONLD(doc: any): APackage { + setJSONLD(doc: any, checks?: ConstraintCheckType[]): APackage { // Extract @context const ctx = this.extractContextJSONLD(doc); @@ -1171,7 +1171,7 @@ export class APackage extends Identifiable implements IAPackage { graph: instantiatedGraph, modified: meta.modified, creator: meta.creator - } as IAPackage); + } as IAPackage, checks); // logger.debug(`APackage.setJSONLD: package ${JSON.stringify(this, null, 2)} set with status`, this.lastStatus); // return the instantiated graph with instantiated graph items: @@ -1211,7 +1211,7 @@ export class APackage extends Identifiable implements IAPackage { // Return stringified JSON-LD return JSON.stringify(jld, null, 4); } */ - setXML(xmlString: stringXML) { + setXML(xmlString: stringXML, checks?: ConstraintCheckType[]) { // 1. Parse XML string to JSON // The context is skipped here, as it is extracted separately below. const parsed = xml2json(xmlString); @@ -1278,7 +1278,7 @@ export class APackage extends Identifiable implements IAPackage { graph: instantiatedGraph, modified: doc.modified, creator: doc.creator - } as unknown as IAPackage); + } as unknown as IAPackage, checks); // logger.debug(`APackage.setXML: package ${JSON.stringify(this,null,2)} set with status`, this.lastStatus); return this; @@ -1291,15 +1291,16 @@ export class APackage extends Identifiable implements IAPackage { const result: stringHTML[] = []; // Extract language preference from options, default to 'en-US' - const lang = options?.lang || 'en-US'; - const widthLeft = options?.widthLeft || '67%'; + const lang = options?.lang ?? 'en-US'; + const widthMain = options?.widthMain ?? '67%'; + const includeItemTypes = options?.itemType ?? [PigItemType.anEntity]; // 1. Package metadata as first element with localization const titleText = getLocalText(this.title, lang); const descText = getLocalText(this.description, lang); const pkgMetadata = `
-
+

${titleText || 'Untitled Package'}

${descText ? `
${descText}
` : ''}
@@ -1314,20 +1315,9 @@ export class APackage extends Identifiable implements IAPackage {
`; result.push(pkgMetadata); - /* const packageMetadata = ``; */ - // 2. Add HTML for all anEntity items (options are passed through) for (const item of this.graph) { - if (item.itemType === PigItemType.anEntity) { + if (includeItemTypes.includes(item.itemType)) { const entityHTML = (item as AnEntity).getHTML(options); result.push(entityHTML); } @@ -1586,7 +1576,7 @@ export class APackage extends Identifiable implements IAPackage { // Validate item has required pig:itemType if (!item['pig:itemType'] || !item['pig:itemType']['@id']) { const id = item['@id'] || item.id || 'unknown'; - logger.error(`APackage.instantiateItemJSONLD: @graph element missing pig:itemType, skipping ${id}`); + // logger.error(`APackage.instantiateItemJSONLD: @graph element missing pig:itemType, skipping ${id}`); return Msg.create(650, 'Instantiation from JSON-LD', 'pig:itemType', id); } @@ -1594,14 +1584,14 @@ export class APackage extends Identifiable implements IAPackage { // Filter allowed item types if (!this.isAllowedItemType(itype)) { - logger.error(`APackage.instantiateItemJSONLD: skipping item type '${itype}' which is not allowed in a graph`); + // logger.error(`APackage.instantiateItemJSONLD: skipping item type '${itype}' which is not allowed in a graph`); return Msg.create(651, 'Instantiation from JSON-LD', itype); } const instance = this.createInstance(itype); if (!instance) { - logger.error(`APackage.instantiateItemJSONLD: unable to create instance for itemType '${itype}'`); + // logger.error(`APackage.instantiateItemJSONLD: unable to create instance for itemType '${itype}'`); return Msg.create(652, 'Instantiation from JSON-LD', itype); } @@ -1611,9 +1601,9 @@ export class APackage extends Identifiable implements IAPackage { // Check if instantiation was successful const status = (instance as any).status(); if (!status || !status.ok) { - logger.error( + /* logger.error( `APackage.instantiateItemJSONLD: ${itype} '${item['@id'] || item.id || 'unknown'}' failed validation: ${status?.statusText || 'unknown error'}` - ); + ); */ return status || Msg.create(653, 'Instantiation from JSON-LD', itype, item['@id'] || item.id || 'unknown'); } @@ -1624,7 +1614,7 @@ export class APackage extends Identifiable implements IAPackage { }; } catch (err: any) { const errorMsg = `APackage.instantiateItemJSONLD: failed to populate instance with itemType '${itype}': ${err?.message ?? err}`; - logger.error(errorMsg); + // logger.error(errorMsg); return Msg.create(654, 'Instantiation from JSON-LD', itype, err?.message ?? String(err)); } } @@ -1645,14 +1635,14 @@ export class APackage extends Identifiable implements IAPackage { // Filter allowed item types if (!this.isAllowedItemType(itype)) { - logger.error(`APackage.instantiateItemXML: skipping item type '${itype}' which is not allowed in a graph`); + // logger.error(`APackage.instantiateItemXML: skipping item type '${itype}' which is not allowed in a graph`); return Msg.create(651, 'Instantiation from XML', itype); } const instance = this.createInstance(itype); if (!instance) { - logger.error(`APackage.instantiateItemXML: unable to create instance for itemType '${itype}'`); + // logger.error(`APackage.instantiateItemXML: unable to create instance for itemType '${itype}'`); return Msg.create(652, 'Instantiation from XML', itype); } @@ -1664,9 +1654,9 @@ export class APackage extends Identifiable implements IAPackage { // Check if instantiation was successful const status = (instance as any).status(); if (!status || !status.ok) { - logger.error( + /* logger.error( `APackage.instantiateItemXML: ${itype} '${item.id || 'unknown'}' failed validation: ${status?.statusText || 'unknown error'}` - ); + ); */ return status || Msg.create(653, 'Instantiation from XML', itype, item.id || 'unknown'); } @@ -1677,7 +1667,7 @@ export class APackage extends Identifiable implements IAPackage { }; } catch (err: any) { const errorMsg = `APackage.instantiateItemXML: failed to populate instance with itemType '${itype}': ${err?.message ?? err}`; - logger.error(errorMsg); + // logger.error(errorMsg); return Msg.create(654, 'Instantiation from XML', itype, err?.message ?? String(err)); } } diff --git a/src/utils/schemas/pig/ts/pig-package-constraints.ts b/src/utils/schemas/pig/ts/pig-package-constraints.ts index 3ac8e24..5abf165 100644 --- a/src/utils/schemas/pig/ts/pig-package-constraints.ts +++ b/src/utils/schemas/pig/ts/pig-package-constraints.ts @@ -29,8 +29,12 @@ * ✅ Unique IDs * ✅ aProperty.hasClass → Property * ✅ aLink.hasClass → Link - * anEntity and aRelationship class references - * Entity and Relationship specializes references + * ✅ anEntity and aRelationship class references + * ✅ Entity and Relationship specializes references + * Instances are consistent with their classes + * - properties and links are eligible + * - occurrence (minCount, maxCount) + * - value range * Phase 2 (important): * namespace prefixes are defined in the context * Enumeration value references @@ -54,11 +58,114 @@ import { IRsp, rspOK, Msg } from "../../../lib/messages"; import { logger } from "../../../lib/helpers"; import { IAPackage, PigItemType, PigItemTypeValue, TPigId } from "./pig-metaclasses"; +/** + * Available constraint check types + */ +export enum ConstraintCheckType { + UniqueIds = 'uniqueIds', + aPropertyHasClass = 'aPropertyHasClass', + aLinkHasClass = 'aLinkHasClass', + anEntityHasClass = 'anEntityHasClass', + aRelationshipHasClass = 'aRelationshipHasClass', + EntitySpecializes = 'entitySpecializes', + RelationshipSpecializes = 'relationshipSpecializes', + PropertySpecializes = 'propertySpecializes', + LinkSpecializes = 'linkSpecializes' +} + +/** + * All available constraint checks + */ +const allConstraintChecks: ConstraintCheckType[] = [ + ConstraintCheckType.UniqueIds, + ConstraintCheckType.aPropertyHasClass, + ConstraintCheckType.aLinkHasClass, + ConstraintCheckType.anEntityHasClass, + ConstraintCheckType.aRelationshipHasClass, + ConstraintCheckType.EntitySpecializes, + ConstraintCheckType.RelationshipSpecializes, + ConstraintCheckType.PropertySpecializes, + ConstraintCheckType.LinkSpecializes +]; + /** * Check cross-item constraints for a package * @param pkg - Package to validate + * @param checksToPerform - Optional list of checks to perform (default: all checks) * @returns IRsp (rspOK on success, error IRsp on failure) */ +export function checkConstraintsForPackage( + pkg: IAPackage, + checksToPerform?: ConstraintCheckType[] +): IRsp { + const checksSet = new Set(checksToPerform ?? allConstraintChecks); + + // 1. Check that all primary IDs are unique + if (checksSet.has(ConstraintCheckType.UniqueIds)) { + const rsp = checkUniqueIds(pkg); + if (!rsp.ok) return rsp; + } + + // 2. Build a map of itemTypes by ID for quick lookup + const itemTypeMap = buildItemTypeMap(pkg); + + // 3. Check aProperty.hasClass references + if (checksSet.has(ConstraintCheckType.aPropertyHasClass)) { + const rsp = checkPropertyReferences(pkg, itemTypeMap); + if (!rsp.ok) return rsp; + } + + // 4. Check aLink.hasClass references (aSourceLink and aTargetLink) + if (checksSet.has(ConstraintCheckType.aLinkHasClass)) { + const rsp = checkLinkReferences(pkg, itemTypeMap); + if (!rsp.ok) return rsp; + } + + // 5a. Check anEntity.hasClass references + if (checksSet.has(ConstraintCheckType.anEntityHasClass)) { + const rsp = checkEntityOrRelationshipReferences(pkg, PigItemType.anEntity, itemTypeMap, 'hasClass'); + if (!rsp.ok) return rsp; + } + + // 5b. Check aRelationship.hasClass references + if (checksSet.has(ConstraintCheckType.aRelationshipHasClass)) { + const rsp = checkEntityOrRelationshipReferences(pkg, PigItemType.aRelationship, itemTypeMap, 'hasClass'); + if (!rsp.ok) return rsp; + } + + // 6a. Check Entity.specializes and Relationship.specializes references + if (checksSet.has(ConstraintCheckType.EntitySpecializes)) { + const rsp = checkEntityOrRelationshipReferences(pkg, PigItemType.Entity, itemTypeMap, 'specializes'); + if (!rsp.ok) return rsp; + } + + // 6b. Check Entity.specializes and Relationship.specializes references + if (checksSet.has(ConstraintCheckType.RelationshipSpecializes)) { + const rsp = checkEntityOrRelationshipReferences(pkg, PigItemType.Relationship, itemTypeMap, 'specializes'); + if (!rsp.ok) return rsp; + } + + // 6c. Check Property.specializes + if (checksSet.has(ConstraintCheckType.PropertySpecializes)) { + const rsp = checkPropertyOrLinkReferences(pkg, PigItemType.Property, itemTypeMap, 'specializes'); + if (!rsp.ok) return rsp; + } + + // 6d. Check Link.specializes + if (checksSet.has(ConstraintCheckType.LinkSpecializes)) { + const rsp = checkPropertyOrLinkReferences(pkg, PigItemType.Link, itemTypeMap, 'specializes'); + if (!rsp.ok) return rsp; + } + + // logger.debug(`Package ${pkg.id || 'unnamed'}: all constraints validated successfully`); + return rspOK; +} + +/** + * Check cross-item constraints for a package + * @param pkg - Package to validate + * @returns IRsp (rspOK on success, error IRsp on failure) + * export function checkConstraintsForPackage(pkg: IAPackage): IRsp { // 1. Check that all primary IDs are unique const uniquenessCheck = checkUniqueIds(pkg); @@ -83,9 +190,27 @@ export function checkConstraintsForPackage(pkg: IAPackage): IRsp { return linkCheck; } + // 5. Check anEntity.hasClass and aRelationship.hasClass references + const classCheck = checkEntityAndRelationshipReferences(pkg, itemTypeMap, 'hasClass'); + if (!classCheck.ok) { + return classCheck; + } + + // 6. Check Entity.specializes and Relationship.specializes references + const specializesCheck = checkEntityAndRelationshipReferences(pkg, itemTypeMap, 'specializes'); + if (!specializesCheck.ok) { + return specializesCheck; + } + + // 7. Check Property.specializes and Link.specializes references + const propertyLinkSpecializesCheck = checkPropertyAndLinkReferences(pkg, itemTypeMap, 'specializes'); + if (!propertyLinkSpecializesCheck.ok) { + return propertyLinkSpecializesCheck; + } + // logger.debug(`Package ${pkg.id || 'unnamed'}: all constraints validated successfully`); return rspOK; -} +}*/ /** * Check that all primary IDs in the package are unique; @@ -163,7 +288,7 @@ function checkPropertyReferences( if (entity.hasProperty && Array.isArray(entity.hasProperty)) { for (let j = 0; j < entity.hasProperty.length; j++) { const prop = entity.hasProperty[j]; - const checkResult = validatePropertyHasClass(prop, itemId, j, itemTypeMap); + const checkResult = checkPropertyHasClass(prop, itemId, j, itemTypeMap); if (!checkResult.ok) { return checkResult; } @@ -177,7 +302,7 @@ function checkPropertyReferences( if (rel.hasProperty && Array.isArray(rel.hasProperty)) { for (let j = 0; j < rel.hasProperty.length; j++) { const prop = rel.hasProperty[j]; - const checkResult = validatePropertyHasClass(prop, itemId, j, itemTypeMap); + const checkResult = checkPropertyHasClass(prop, itemId, j, itemTypeMap); if (!checkResult.ok) { return checkResult; } @@ -197,7 +322,7 @@ function checkPropertyReferences( * @param itemTypeMap - Map for reference lookup * @returns IRsp (rspOK on success, error on invalid reference) */ -function validatePropertyHasClass( +function checkPropertyHasClass( prop: any, parentId: string, propIndex: number, @@ -207,8 +332,8 @@ function validatePropertyHasClass( return Msg.create(672, parentId, propIndex, 'missing hasClass'); } - // logger.debug(`validatePropertyHasClass: checking hasClass ${JSON.stringify(prop, null, 2)} for property at index ${propIndex} of parent ${parentId}`); - // logger.debug(`validatePropertyHasClass: itemTypeMap = ${JSON.stringify(Array.from(itemTypeMap.entries()), null, 2)}`); + // logger.debug(`checkPropertyHasClass: checking hasClass ${JSON.stringify(prop, null, 2)} for property at index ${propIndex} of parent ${parentId}`); + // logger.debug(`checkPropertyHasClass: itemTypeMap = ${JSON.stringify(Array.from(itemTypeMap.entries()), null, 2)}`); const targetType = itemTypeMap.get(prop.hasClass); if (!targetType) { @@ -243,7 +368,7 @@ function checkLinkReferences( if (entity.hasTargetLink && Array.isArray(entity.hasTargetLink)) { for (let j = 0; j < entity.hasTargetLink.length; j++) { const link = entity.hasTargetLink[j]; - const checkResult = validateLinkHasClass(link, itemId, j, 'hasTargetLink', itemTypeMap); + const checkResult = checkLinkHasClass(link, itemId, j, 'hasTargetLink', itemTypeMap); if (!checkResult.ok) { return checkResult; } @@ -259,7 +384,7 @@ function checkLinkReferences( if (rel.hasSourceLink && Array.isArray(rel.hasSourceLink)) { for (let j = 0; j < rel.hasSourceLink.length; j++) { const link = rel.hasSourceLink[j]; - const checkResult = validateLinkHasClass(link, itemId, j, 'hasSourceLink', itemTypeMap); + const checkResult = checkLinkHasClass(link, itemId, j, 'hasSourceLink', itemTypeMap); if (!checkResult.ok) { return checkResult; } @@ -270,7 +395,7 @@ function checkLinkReferences( if (rel.hasTargetLink && Array.isArray(rel.hasTargetLink)) { for (let j = 0; j < rel.hasTargetLink.length; j++) { const link = rel.hasTargetLink[j]; - const checkResult = validateLinkHasClass(link, itemId, j, 'hasTargetLink', itemTypeMap); + const checkResult = checkLinkHasClass(link, itemId, j, 'hasTargetLink', itemTypeMap); if (!checkResult.ok) { return checkResult; } @@ -291,8 +416,8 @@ function checkLinkReferences( * @param itemTypeMap - Map for reference lookup * @returns IRsp (rspOK on success, error on invalid reference) */ -function validateLinkHasClass( - link: any, +function checkLinkHasClass( + link: any, // PigItemType.aSourceLink | PigItemType.aTargetLink, parentId: string, linkIndex: number, linkArrayName: string, @@ -313,3 +438,152 @@ function validateLinkHasClass( return rspOK; } +/** + * Check that Entity/Relationship references (hasClass or specializes) point to valid items + * @param pkg - Package to validate + * @param itemTypeMap - Map from ID to itemType for reference lookup + * @param referenceType - Type of reference to check: 'hasClass' or 'specializes' + * @returns IRsp (rspOK on success, error on invalid reference) + */ +function checkEntityOrRelationshipReferences( + pkg: IAPackage, + itemType: PigItemTypeValue, // PigItemType.anEntity | PigItemType.aRelationship, + itemTypeMap: Map, + referenceType: 'hasClass' | 'specializes' +): IRsp { + const isHasClass = referenceType === 'hasClass'; + + for (let i = 0; i < pkg.graph.length; i++) { + const item = pkg.graph[i]; + const iType = (item as any).itemType; + const iId = (item as any)['@id'] ?? (item as any).id; + + // Check Entity items (both anEntity for hasClass, and Entity for specializes) + const isInstance = [PigItemType.anEntity, PigItemType.aRelationship].includes(iType); + const isClass = [PigItemType.Entity, PigItemType.Relationship].includes(iType); + + if( iType == itemType ) + if ((isHasClass && isInstance) || (!isHasClass && isClass)) { + const referenceValue = item[referenceType]; + + // logger.debug('checkEntityOrRelationshipReferences: ',item); + + if (!referenceValue) { + // specializes is optional (can inherit from pig:Entity directly) + if (!isHasClass) { + continue; + } + return Msg.create(674, iId, i, referenceType, `missing ${referenceType}`); + } + + // Expected type depends on whether we're checking hasClass or specializes: + // - hasClass: anEntity -> Entity, aRelationship -> Relationship + // - specializes: Entity -> Entity, Relationship -> Relationship + const expectedType = [PigItemType.Entity, PigItemType.anEntity].includes(itemType as any) ? PigItemType.Entity : PigItemType.Relationship; + const targetType = itemTypeMap.get(referenceValue); + if (!targetType) { + return Msg.create(675, iId, i, referenceType, referenceValue, 'not found in package'); + } + if (targetType !== expectedType) { + return Msg.create(675, iId, i, referenceType, referenceValue, `expected ${expectedType}, found ${targetType}`); + } + } + + /* + const contextName = isHasClass ? 'hasClass' : 'specializes'; + // Check Entity items (both anEntity for hasClass, and Entity for specializes) + const isEntityInstance = iType === PigItemType.anEntity; + const isEntityClass = iType === PigItemType.Entity; + + if ((isHasClass && isEntityInstance) || (!isHasClass && isEntityClass)) { + const entity = item as any; + const referenceValue = entity[referenceType]; + + if (!referenceValue) { + // specializes is optional (can inherit from pig:Entity directly) + if (!isHasClass) { + continue; + } + return Msg.create(674, iId, i, contextName, `missing ${contextName}`); + } + + const targetType = itemTypeMap.get(referenceValue); + if (!targetType) { + return Msg.create(675, iId, i, contextName, referenceValue, 'not found in package'); + } + if (targetType !== PigItemType.Entity) { + return Msg.create(675, iId, i, contextName, referenceValue, `expected pig:Entity, found ${targetType}`); + } + } + + // Check Relationship items (both aRelationship for hasClass, and Relationship for specializes) + const isRelationshipInstance = iType === PigItemType.aRelationship; + const isRelationshipClass = iType === PigItemType.Relationship; + + if ((isHasClass && isRelationshipInstance) || (!isHasClass && isRelationshipClass)) { + const rel = item as any; + const referenceValue = rel[referenceType]; + + if (!referenceValue) { + // specializes is optional (can inherit from pig:Relationship directly) + if (!isHasClass) { + continue; + } + return Msg.create(674, iId, i, contextName, `missing ${contextName}`); + } + + const targetType = itemTypeMap.get(referenceValue); + if (!targetType) { + return Msg.create(675, iId, i, contextName, referenceValue, 'not found in package'); + } + if (targetType !== PigItemType.Relationship) { + return Msg.create(675, iId, i, contextName, referenceValue, `expected pig:Relationship, found ${targetType}`); + } + } */ + } + + return rspOK; +} +/** + * Check that Property/Link specializes references point to valid items + * @param pkg - Package to validate + * @param itemTypeMap - Map from ID to itemType for reference lookup + * @param referenceType - Type of reference to check: currently only 'specializes' + * @returns IRsp (rspOK on success, error on invalid reference) + */ +function checkPropertyOrLinkReferences( + pkg: IAPackage, + itemType: PigItemTypeValue, + itemTypeMap: Map, + referenceType: 'specializes' +): IRsp { + for (let i = 0; i < pkg.graph.length; i++) { + const item = pkg.graph[i]; + const iType = (item as any).itemType; + const iId = (item as any)['@id'] ?? (item as any).id; + + if (iType === itemType) { + const property = item as any; + const referenceValue = property[referenceType]; + + if (!referenceValue) { + // specializes is optional (can inherit from pig:Property directly) + continue; + } + + // Expected type depends on whether we're checking Property or Link: + // - Property.specializes -> Property + // - Link.specializes -> Link + const expectedType = [PigItemType.Property].includes(itemType as any) ? PigItemType.Property : PigItemType.Link; + const targetType = itemTypeMap.get(referenceValue); + if (!targetType) { + return Msg.create(675, iId, i, referenceType, referenceValue, 'not found in package'); + } + if (targetType !== expectedType) { + return Msg.create(675, iId, i, referenceType, referenceValue, `expected ${expectedType}, found ${targetType}`); + } + } + } + + return rspOK; +} diff --git a/tests/unit/import-package-jsonld.spec.ts b/tests/unit/import-package-jsonld.spec.ts index 32573b5..d67eceb 100644 --- a/tests/unit/import-package-jsonld.spec.ts +++ b/tests/unit/import-package-jsonld.spec.ts @@ -8,7 +8,7 @@ describe('importJSONLD (file system)', () => { const filenames:string[] = [ //"../data/JSON-LD/05/Project 'Requirement with Enumerated Property'.pig.jsonld", //"../data/JSON-LD/11/Alice.pig.jsonld", - //"../data/JSON-LD/21/Project 'Very Simple Model (FMC) with Requirements'.pig.jsonld", + "../data/JSON-LD/21/Project 'Very Simple Model (FMC) with Requirements'.pig.jsonld", //"../data/JSON-LD/22/Small Autonomous Vehicle.pig.jsonld" // add more test files here, e.g. // "../data/JSON-LD/another-sample.pig.jsonld" diff --git a/tests/unit/pig-package-constraints.spec.ts b/tests/unit/pig-package-constraints.spec.ts index 3ecc8b2..f3e5927 100644 --- a/tests/unit/pig-package-constraints.spec.ts +++ b/tests/unit/pig-package-constraints.spec.ts @@ -4,8 +4,8 @@ * License and terms of use: Apache 2.0 (http://www.apache.org/licenses/LICENSE-2.0) */ -import { checkConstraintsForPackage } from '../../src/utils/schemas/pig/ts/pig-package-constraints'; -import { APackage, IAPackage, PigItemType } from '../../src/utils/schemas/pig/ts/pig-metaclasses'; +import { APackage } from '../../src/utils/schemas/pig/ts/pig-metaclasses'; +import { ConstraintCheckType } from '../../src/utils/schemas/pig/ts/pig-package-constraints'; describe('PIG Package Constraint Validation', () => { describe('Positive Tests - Valid Packages', () => { @@ -22,6 +22,26 @@ describe('PIG Package Constraint Validation', () => { 'pig:itemType': { '@id': 'pig:aPackage' }, 'dcterms:modified': '2025-01-16T10:00:00Z', '@graph': [ + { + "@id": "pig:Property", + "@type": "owl:DatatypeProperty", + "pig:itemType": { + "@id": "pig:Property" + }, + "dcterms:title": [ + { + "@value": "Property" + } + ], + "dcterms:description": [ + { + "@value": "A PIG meta-model element used for properties (aka attributes)." + } + ], + "sh:datatype": { + "@id": "xs:anyType" + } + }, { '@id': 'o:Property_Status', 'pig:specializes': 'pig:Property', @@ -31,6 +51,31 @@ describe('PIG Package Constraint Validation', () => { ], 'sh:datatype': { '@id': 'xs:string' } }, + { + "@id": "pig:Link", + "@type": "owl:ObjectProperty", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ], + "dcterms:title": [ + { + "@value": "linked with" + } + ], + "dcterms:description": [ + { + "@value": "Connects a reified relationship with its source or target. Also connects an organizer to a model element" + } + ] + }, { '@id': 'o:Link_RefersTo', 'pig:specializes': 'pig:Link', @@ -42,6 +87,23 @@ describe('PIG Package Constraint Validation', () => { { '@id': 'o:Entity_Requirement' } ] }, + { + "@id": "pig:Entity", + "@type": "owl:Class", + "pig:itemType": { + "@id": "pig:Entity" + }, + "dcterms:title": [ + { + "@value": "Entity" + } + ], + "dcterms:description": [ + { + "@value": "A PIG meta-model element used for entities (aka resources or artifacts)." + } + ] + }, { '@id': 'o:Entity_Requirement', 'pig:specializes': 'pig:Entity', @@ -85,16 +147,12 @@ describe('PIG Package Constraint Validation', () => { ] }; - const pkg = new APackage().setJSONLD(validPackageJsonLd); + const pkg = new APackage().setJSONLD(validPackageJsonLd); // all constraint checks const items = pkg.getAllItems(); expect(pkg.status().ok).toBe(true); - expect(items.length).toBe(6); + expect(items.length).toBe(9); - const rsp = checkConstraintsForPackage(pkg.get() as IAPackage); - - expect(rsp.ok).toBe(true); - expect(rsp.status).toBe(0); }); test('should validate package with relationship containing source and target links', () => { @@ -110,6 +168,26 @@ describe('PIG Package Constraint Validation', () => { 'pig:itemType': { '@id': 'pig:aPackage' }, 'dcterms:modified': '2025-01-16T10:00:00Z', '@graph': [ + { + "@id": "pig:Property", + "@type": "owl:DatatypeProperty", + "pig:itemType": { + "@id": "pig:Property" + }, + "dcterms:title": [ + { + "@value": "Property" + } + ], + "dcterms:description": [ + { + "@value": "A PIG meta-model element used for properties (aka attributes)." + } + ], + "sh:datatype": { + "@id": "xs:anyType" + } + }, { '@id': 'o:Property_Rationale', 'pig:specializes': 'pig:Property', @@ -119,6 +197,31 @@ describe('PIG Package Constraint Validation', () => { ], 'sh:datatype': { '@id': 'xs:string' } }, + { + "@id": "pig:Link", + "@type": "owl:ObjectProperty", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ], + "dcterms:title": [ + { + "@value": "linked with" + } + ], + "dcterms:description": [ + { + "@value": "Connects a reified relationship with its source or target. Also connects an organizer to a model element" + } + ] + }, { '@id': 'o:Link_Source', 'pig:specializes': 'pig:Link', @@ -141,6 +244,40 @@ describe('PIG Package Constraint Validation', () => { { '@id': 'o:Entity_Requirement' } ] }, + { + "@id": "pig:Entity", + "@type": "owl:Class", + "pig:itemType": { + "@id": "pig:Entity" + }, + "dcterms:title": [ + { + "@value": "Entity" + } + ], + "dcterms:description": [ + { + "@value": "A PIG meta-model element used for entities (aka resources or artifacts)." + } + ] + }, + { + "@id": "pig:Relationship", + "@type": "owl:Class", + "pig:itemType": { + "@id": "pig:Relationship" + }, + "dcterms:title": [ + { + "@value": "Relationship" + } + ], + "dcterms:description": [ + { + "@value": "A PIG meta-model element used for reified relationships (aka predicates)." + } + ] + }, { '@id': 'o:Relationship_Trace', 'pig:specializes': 'pig:Relationship', @@ -212,12 +349,8 @@ describe('PIG Package Constraint Validation', () => { const items = pkg.getAllItems(); expect(pkg.status().ok).toBe(true); - expect(items.length).toBe(9); + expect(items.length).toBe(13); - const rsp = checkConstraintsForPackage(pkg.get() as IAPackage); - - expect(rsp.ok).toBe(true); - expect(rsp.status).toBe(0); }); }); @@ -264,7 +397,7 @@ describe('PIG Package Constraint Validation', () => { }; const pkg = new APackage(); - pkg.setJSONLD(packageWithDuplicateIds); + pkg.setJSONLD(packageWithDuplicateIds,[ConstraintCheckType.UniqueIds]); // check the attribute values upon creation: /* if (pck.status().ok) @@ -661,4 +794,291 @@ describe('PIG Package Constraint Validation', () => { expect(rsp.statusText).toContain('expected pig:Link, found pig:Property'); */ }); }); + describe('Negative Tests - Invalid Entity and Relationship hasClass References', () => { + test('should reject anEntity with missing hasClass reference', () => { + const packageWithMissingEntityClass = { + '@context': { + 'pig': 'https://product-information-graph.gfse.org/', + 'dcterms': 'http://purl.org/dc/terms/', + 'sh': 'http://www.w3.org/ns/shacl#', + 'o': 'https://example.org/ontology/', + 'd': 'https://example.org/data/' + }, + '@id': 'd:test-missing-entity-class', + 'pig:itemType': { '@id': 'pig:aPackage' }, + 'dcterms:modified': '2025-01-16T10:00:00Z', + '@graph': [ + { + '@id': 'o:Entity_Requirement', + 'pig:specializes': 'pig:Entity', + 'pig:itemType': { '@id': 'pig:Entity' }, + 'dcterms:title': [ + { '@value': 'Requirement', '@language': 'en' } + ] + }, + { + '@id': 'd:REQ-invalid-class-nok', + // ❌ Missing @type (which maps to hasClass) + 'pig:itemType': { '@id': 'pig:anEntity' }, + 'pig:revision': '1.0', + 'dcterms:modified': '2025-01-16T10:00:00Z', + 'dcterms:title': [ + { '@value': 'Entity without class', '@language': 'en' } + ] + } + ] + }; + + const pkg = new APackage(); + pkg.setJSONLD(packageWithMissingEntityClass); + + expect(pkg.status().ok).toBe(false); + expect(pkg.status().status).toBe(679); // Not all item instantiations succeeded + }); + + test('should reject anEntity with hasClass pointing to non-existent Entity', () => { + const packageWithInvalidEntityClass = { + '@context': { + 'pig': 'https://product-information-graph.gfse.org/', + 'dcterms': 'http://purl.org/dc/terms/', + 'sh': 'http://www.w3.org/ns/shacl#', + 'o': 'https://example.org/ontology/', + 'd': 'https://example.org/data/' + }, + '@id': 'd:test-invalid-entity-class', + 'pig:itemType': { '@id': 'pig:aPackage' }, + 'dcterms:modified': '2025-01-16T10:00:00Z', + '@graph': [ + { + '@id': 'o:Entity_Requirement', + 'pig:specializes': 'pig:Entity', + 'pig:itemType': { '@id': 'pig:Entity' }, + 'dcterms:title': [ + { '@value': 'Requirement', '@language': 'en' } + ] + }, + { + '@id': 'd:REQ-nonexistent-class-nok', + '@type': 'o:Entity_NonExistent', // ❌ References non-existent Entity class + 'pig:itemType': { '@id': 'pig:anEntity' }, + 'pig:revision': '1.0', + 'dcterms:modified': '2025-01-16T10:00:00Z', + 'dcterms:title': [ + { '@value': 'Entity with invalid class', '@language': 'en' } + ] + } + ] + }; + + const pkg = new APackage(); + pkg.setJSONLD(packageWithInvalidEntityClass); + + expect(pkg.status().ok).toBe(false); + expect(pkg.status().status).toBe(675); // Invalid hasClass reference (not found) + }); + + test('should reject anEntity with hasClass pointing to wrong type (Property instead of Entity)', () => { + const packageWithWrongEntityClassType = { + '@context': { + 'pig': 'https://product-information-graph.gfse.org/', + 'dcterms': 'http://purl.org/dc/terms/', + 'sh': 'http://www.w3.org/ns/shacl#', + 'o': 'https://example.org/ontology/', + 'd': 'https://example.org/data/' + }, + '@id': 'd:test-wrong-entity-class-type', + 'pig:itemType': { '@id': 'pig:aPackage' }, + 'dcterms:modified': '2025-01-16T10:00:00Z', + '@graph': [ + { + '@id': 'o:Property_Status', + 'pig:specializes': 'pig:Property', + 'pig:itemType': { '@id': 'pig:Property' }, + 'dcterms:title': [ + { '@value': 'Status', '@language': 'en' } + ], + 'sh:datatype': { '@id': 'xs:string' } + }, + { + '@id': 'd:REQ-wrong-class-type-nok', + '@type': 'o:Property_Status', // ❌ References Property instead of Entity + 'pig:itemType': { '@id': 'pig:anEntity' }, + 'pig:revision': '1.0', + 'dcterms:modified': '2025-01-16T10:00:00Z', + 'dcterms:title': [ + { '@value': 'Entity with Property as class', '@language': 'en' } + ] + } + ] + }; + + const pkg = new APackage(); + pkg.setJSONLD(packageWithWrongEntityClassType); + + expect(pkg.status().ok).toBe(false); + expect(pkg.status().status).toBe(675); // Invalid hasClass type + }); + + test('should reject aRelationship with missing hasClass reference', () => { + const packageWithMissingRelClass = { + '@context': { + 'pig': 'https://product-information-graph.gfse.org/', + 'dcterms': 'http://purl.org/dc/terms/', + 'sh': 'http://www.w3.org/ns/shacl#', + 'o': 'https://example.org/ontology/', + 'd': 'https://example.org/data/' + }, + '@id': 'd:test-missing-rel-class', + 'pig:itemType': { '@id': 'pig:aPackage' }, + 'dcterms:modified': '2025-01-16T10:00:00Z', + '@graph': [ + { + '@id': 'o:Link_Source', + 'pig:specializes': 'pig:Link', + 'pig:itemType': { '@id': 'pig:Link' }, + 'dcterms:title': [ + { '@value': 'Source', '@language': 'en' } + ] + }, + { + '@id': 'o:Link_Target', + 'pig:specializes': 'pig:Link', + 'pig:itemType': { '@id': 'pig:Link' }, + 'dcterms:title': [ + { '@value': 'Target', '@language': 'en' } + ] + }, + { + '@id': 'o:Relationship_Trace', + 'pig:specializes': 'pig:Relationship', + 'pig:itemType': { '@id': 'pig:Relationship' }, + 'dcterms:title': [ + { '@value': 'Trace', '@language': 'en' } + ] + }, + { + '@id': 'o:Entity_Requirement', + 'pig:specializes': 'pig:Entity', + 'pig:itemType': { '@id': 'pig:Entity' }, + 'dcterms:title': [ + { '@value': 'Requirement', '@language': 'en' } + ] + }, + { + '@id': 'd:REQ-008-ok', + '@type': 'o:Entity_Requirement', + 'pig:itemType': { '@id': 'pig:anEntity' }, + 'pig:revision': '1.0', + 'dcterms:modified': '2025-01-16T10:00:00Z', + 'dcterms:title': [ + { '@value': 'Source Requirement', '@language': 'en' } + ] + }, + { + '@id': 'd:REL-missing-class-nok', + // ❌ Missing @type (which maps to hasClass) + 'pig:itemType': { '@id': 'pig:aRelationship' }, + 'pig:revision': '1.0', + 'dcterms:modified': '2025-01-16T10:00:00Z', + 'dcterms:title': [ + { '@value': 'Relationship without class', '@language': 'en' } + ], + 'o:Link_Source': [ + { + 'pig:itemType': { '@id': 'pig:aSourceLink' }, + '@id': 'd:REQ-008-ok' + } + ] + } + ] + }; + + const pkg = new APackage(); + pkg.setJSONLD(packageWithMissingRelClass); + + expect(pkg.status().ok).toBe(false); + expect(pkg.status().status).toBe(679); // Not all item instantiations succeeded + }); + + test('should reject aRelationship with hasClass pointing to wrong type (Link instead of Relationship)', () => { + const packageWithWrongRelClassType = { + '@context': { + 'pig': 'https://product-information-graph.gfse.org/', + 'dcterms': 'http://purl.org/dc/terms/', + 'sh': 'http://www.w3.org/ns/shacl#', + 'o': 'https://example.org/ontology/', + 'd': 'https://example.org/data/' + }, + '@id': 'd:test-wrong-rel-class-type', + 'pig:itemType': { '@id': 'pig:aPackage' }, + 'dcterms:modified': '2025-01-16T10:00:00Z', + '@graph': [ + { + '@id': 'o:Link_Source', + 'pig:specializes': 'pig:Link', + 'pig:itemType': { '@id': 'pig:Link' }, + 'dcterms:title': [ + { '@value': 'Source', '@language': 'en' } + ] + }, + { + '@id': 'o:Link_Target', + 'pig:specializes': 'pig:Link', + 'pig:itemType': { '@id': 'pig:Link' }, + 'dcterms:title': [ + { '@value': 'Target', '@language': 'en' } + ] + }, + { + '@id': 'o:Relationship_Trace', + 'pig:specializes': 'pig:Relationship', + 'pig:itemType': { '@id': 'pig:Relationship' }, + 'dcterms:title': [ + { '@value': 'Trace', '@language': 'en' } + ] + }, + { + '@id': 'o:Entity_Requirement', + 'pig:specializes': 'pig:Entity', + 'pig:itemType': { '@id': 'pig:Entity' }, + 'dcterms:title': [ + { '@value': 'Requirement', '@language': 'en' } + ] + }, + { + '@id': 'd:REQ-009-ok', + '@type': 'o:Entity_Requirement', + 'pig:itemType': { '@id': 'pig:anEntity' }, + 'pig:revision': '1.0', + 'dcterms:modified': '2025-01-16T10:00:00Z', + 'dcterms:title': [ + { '@value': 'Source Requirement', '@language': 'en' } + ] + }, + { + '@id': 'd:REL-wrong-class-type-nok', + '@type': 'o:Link_Source', // ❌ References Link instead of Relationship + 'pig:itemType': { '@id': 'pig:aRelationship' }, + 'pig:revision': '1.0', + 'dcterms:modified': '2025-01-16T10:00:00Z', + 'dcterms:title': [ + { '@value': 'Relationship with Link as class', '@language': 'en' } + ], + 'o:Link_Source': [ + { + 'pig:itemType': { '@id': 'pig:aSourceLink' }, + '@id': 'd:REQ-009-ok' + } + ] + } + ] + }; + + const pkg = new APackage(); + pkg.setJSONLD(packageWithWrongRelClassType); + + expect(pkg.status().ok).toBe(false); + expect(pkg.status().status).toBe(679); // Not all item instantiations succeeded + }); + }); }); diff --git a/tests/unit/pig-package-gethtml.spec.ts b/tests/unit/pig-package-gethtml.spec.ts index 3a12c10..13e3c03 100644 --- a/tests/unit/pig-package-gethtml.spec.ts +++ b/tests/unit/pig-package-gethtml.spec.ts @@ -5,6 +5,7 @@ */ import { APackage } from '../../src/utils/schemas/pig/ts/pig-metaclasses'; +import { ConstraintCheckType } from '../../src/utils/schemas/pig/ts/pig-package-constraints'; describe('PIG Package getHTML() Method', () => { describe('Valid Package with Single Entity', () => { @@ -68,7 +69,7 @@ describe('PIG Package getHTML() Method', () => { ] }; - const pkg = new APackage().setJSONLD(validPackageWithEntity); + const pkg = new APackage().setJSONLD(validPackageWithEntity, [ConstraintCheckType.UniqueIds, ConstraintCheckType.aPropertyHasClass]); expect(pkg.status().ok).toBe(true); @@ -136,7 +137,7 @@ describe('PIG Package getHTML() Method', () => { ] }; - const pkg = new APackage().setJSONLD(packageWithoutEntities); + const pkg = new APackage().setJSONLD(packageWithoutEntities, [ConstraintCheckType.UniqueIds, ConstraintCheckType.aPropertyHasClass]); expect(pkg.status().ok).toBe(true); @@ -216,7 +217,7 @@ describe('PIG Package getHTML() Method', () => { ] }; - const pkg = new APackage().setJSONLD(packageWithMixedItems); + const pkg = new APackage().setJSONLD(packageWithMixedItems, [ConstraintCheckType.UniqueIds, ConstraintCheckType.aPropertyHasClass]); expect(pkg.status().ok).toBe(true); @@ -242,7 +243,7 @@ describe('PIG Package getHTML() Method', () => { '@graph': [] // Empty graph - invalid! }; - const pkg = new APackage().setJSONLD(invalidPackage); + const pkg = new APackage().setJSONLD(invalidPackage, [ConstraintCheckType.UniqueIds, ConstraintCheckType.aPropertyHasClass]); expect(pkg.status().ok).toBe(false); @@ -312,7 +313,7 @@ describe('PIG Package getHTML() Method', () => { ] }; - const pkg = new APackage().setJSONLD(packageWithMultipleEntities); + const pkg = new APackage().setJSONLD(packageWithMultipleEntities, [ConstraintCheckType.UniqueIds, ConstraintCheckType.aPropertyHasClass]); expect(pkg.status().ok).toBe(true); From 686e3f822f46490f6f873fa4d6c3204be20250ae Mon Sep 17 00:00:00 2001 From: "OD-T14S-25\\PCUser" Date: Mon, 2 Feb 2026 14:32:13 +0100 Subject: [PATCH 08/11] all constraint checks applied on JSONLD and XML import. --- .../import/jsonld/import-package-jsonld.ts | 5 +- src/utils/import/xml/import-package-xml.ts | 5 +- src/utils/schemas/pig/json/pig-schemata.ts | 76 + src/utils/schemas/pig/ts/pig-metaclasses.ts | 13 + ...ement with Enumerated Property'.pig.jsonld | 2 +- tests/data/JSON-LD/11/Alice.pig.jsonld | 2 +- ... Model (FMC) with Requirements'.pig.jsonld | 2 +- .../22/Small Autonomous Vehicle.pig.jsonld | 8369 ++++++++++++++++- ...ple Model (FMC) with Requirements'.pig.xml | 2 +- 9 files changed, 8467 insertions(+), 9 deletions(-) diff --git a/src/utils/import/jsonld/import-package-jsonld.ts b/src/utils/import/jsonld/import-package-jsonld.ts index 761f4a4..52169d3 100644 --- a/src/utils/import/jsonld/import-package-jsonld.ts +++ b/src/utils/import/jsonld/import-package-jsonld.ts @@ -54,7 +54,8 @@ export async function importJSONLD(source: string | File | Blob): Promise } // Instantiate APackage and load the document - const aPackage = new APackage().setJSONLD( + const aPackage = new APackage().setJSONLD(doc); // apply all constraints checks by default +/* const aPackage = new APackage().setJSONLD( doc, // some examples are incomplete, so we skip the tests for specializes: [ @@ -65,7 +66,7 @@ export async function importJSONLD(source: string | File | Blob): Promise ConstraintCheckType.aRelationshipHasClass, ] ); - +*/ // Check if package was successfully created if (!aPackage.status().ok) { return aPackage.status(); diff --git a/src/utils/import/xml/import-package-xml.ts b/src/utils/import/xml/import-package-xml.ts index f35128c..fcd0189 100644 --- a/src/utils/import/xml/import-package-xml.ts +++ b/src/utils/import/xml/import-package-xml.ts @@ -63,7 +63,8 @@ export async function importXML(source: string | File | Blob): Promise { */ // Instantiate APackage directly from XML string - const aPackage = new APackage().setXML( + const aPackage = new APackage().setXML(xmlString); // apply all constraints checks by default +/* const aPackage = new APackage().setXML( xmlString, // some examples are incomplete, so we skip the tests for specializes: [ @@ -74,7 +75,7 @@ export async function importXML(source: string | File | Blob): Promise { ConstraintCheckType.aRelationshipHasClass, ] ); - +*/ // Check if package was successfully created if (!aPackage.status().ok) { return aPackage.status(); diff --git a/src/utils/schemas/pig/json/pig-schemata.ts b/src/utils/schemas/pig/json/pig-schemata.ts index 2b4cd7b..1a344cc 100644 --- a/src/utils/schemas/pig/json/pig-schemata.ts +++ b/src/utils/schemas/pig/json/pig-schemata.ts @@ -550,6 +550,77 @@ const ARELATIONSHIP_SCHEMA = { }; const validateARelationshipSchema = ajv.compile(ARELATIONSHIP_SCHEMA); +/* APACKAGE_SCHEMA: describes IAPackage (pig:aPackage) */ +const APACKAGE_SCHEMA = { + $schema: 'http://json-schema.org/draft-07/schema#', + $id: 'https://gfse.org/schemas/pig/IAPackage', + type: 'object', + properties: { + context: { + type: 'array', + // minItems: 1, + items: { + type: 'object', + description: 'Namespace definitions with tag and URI mappings', + properties: { + tag: { type: 'string' }, + uri: { type: 'string', format: 'uri' } + }, + additionalProperties: false + } + }, + id: { $ref: '#/$defs/idString' }, + itemType: { + type: 'string', + enum: ['pig:aPackage'], + description: 'The PigItemType for pig:aPackage' + }, + title: { + type: 'array', + minItems: 1, + items: { $ref: '#/$defs/LanguageText' } + }, + description: { + type: 'array', + minItems: 1, + items: { $ref: '#/$defs/LanguageText' } + }, + modified: { + type: 'string', + format: 'date-time' + }, + creator: { type: 'string' }, + graph: { + type: 'array', + items: { + type: 'object', + description: 'Any PIG item in the package graph; items are checked individually before instantiation' + } + } + }, + additionalProperties: false, + required: ['id', 'itemType', 'modified', 'graph'], + $defs: { + idString: { + type: 'string', + description: 'TPigId — term with namespace (prefix:local) or an URI', + pattern: ID_NAME_PATTERN + }, + LanguageText: { + type: 'object', + required: ['value'], + additionalProperties: false, + properties: { + value: { type: 'string' }, + lang: { type: 'string' } + } + } + } +}; +const validateAPackageSchema = ajv.compile(APACKAGE_SCHEMA); + +/** SCH: Exported schemata and validation functions for PIG items: +*/ export const SCH = { PROPERTY_SCHEMA, validatePropertySchema, @@ -580,5 +651,10 @@ export const SCH = { validateARelationshipSchema, getValidateARelationshipErrors() { return ajv.errorsText(validateARelationshipSchema.errors, { separator: '; ' }) + }, + APACKAGE_SCHEMA, + validateAPackageSchema, + getValidateAPackageErrors() { + return ajv.errorsText(validateAPackageSchema.errors, { separator: '; ' }) } }; diff --git a/src/utils/schemas/pig/ts/pig-metaclasses.ts b/src/utils/schemas/pig/ts/pig-metaclasses.ts index 4ab6a57..ff375aa 100644 --- a/src/utils/schemas/pig/ts/pig-metaclasses.ts +++ b/src/utils/schemas/pig/ts/pig-metaclasses.ts @@ -1062,6 +1062,19 @@ export class APackage extends Identifiable implements IAPackage { } validate(itm: IAPackage, checks?: ConstraintCheckType[] ): IRsp { + // Schema validation (AJV) - provides structural checks and reuses the idString definition + // ... only at the lowest subclass level: + logger.debug('APackage.validate: ', itm); + try { + const ok = SCH.validateAPackageSchema(itm); + if (!ok) { + const msg = SCH.getValidateAPackageErrors(); + return Msg.create(681, 'aPackage', itm.id, msg); + } + } catch (err: any) { + return Msg.create(682, 'aRelationship', itm.id, err?.message ?? String(err)); + } + // graph must be present and be an array if (!Array.isArray(itm.graph) || itm.graph.length < 1) { return Msg.create(630, 'graph'); diff --git a/tests/data/JSON-LD/05/Project 'Requirement with Enumerated Property'.pig.jsonld b/tests/data/JSON-LD/05/Project 'Requirement with Enumerated Property'.pig.jsonld index 5ba3400..a246c73 100644 --- a/tests/data/JSON-LD/05/Project 'Requirement with Enumerated Property'.pig.jsonld +++ b/tests/data/JSON-LD/05/Project 'Requirement with Enumerated Property'.pig.jsonld @@ -1 +1 @@ -{"@context":{"o":"https://product-information-graph.org/v0.2/ontology#","d":"https://product-information-graph.org/examples/05_Requirement-with-Enumerated-Property.specif#","rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","owl":"http://www.w3.org/2002/07/owl#","sh":"http://www.w3.org/ns/shacl#","xs":"http://www.w3.org/2001/XMLSchema#","dcterms":"http://purl.org/dc/terms/","IREB":"https://cpre.ireb.org/en/downloads-and-resources/glossary#","ReqIF":"https://www.prostep.org/fileadmin/downloads/PSI_ImplementationGuide_ReqIF_V1-7.pdf#","pig":"https://product-information-graph.org/v0.2/metamodel#","SpecIF":"https://specif.de/v1.2/schema#"},"@id":"d:P-Requirement-with-Enumerated-Property","@type":"pig:Package","dcterms:title":[{"@value":"Project 'Requirement with Enumerated Property'"}],"dcterms:modified":"2026-01-17T22:31:13.052Z","@graph":[{"@id":"pig:Entity","@type":"owl:Class","pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Entity"}],"dcterms:description":[{"@value":"A PIG meta-model element used for entities (aka resources or artifacts)."}],"pig:eligibleProperty":[{"@id":"pig:category"},{"@id":"pig:icon"}]},{"@id":"pig:Organizer","pig:specializes":{"@id":"pig:Entity"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Organizer"}],"dcterms:description":[{"@value":"An element organizing model elements. An example is a list of requirements or a diagram using a certain notation."}],"pig:eligibleProperty":[{"@id":"pig:category"}]},{"@id":"pig:HierarchyRoot","pig:specializes":{"@id":"pig:Organizer"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Hierarchy Root"}],"dcterms:description":[{"@value":"A subclass of PIG organizer serving as a root for hierarchically organized graph elements."}],"pig:eligibleProperty":[],"pig:eligibleTargetLink":[{"@id":"pig:lists"}]},{"@id":"pig:Outline","pig:specializes":{"@id":"pig:Organizer"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Outline"}],"dcterms:description":[{"@value":"A subclass of PIG organizer comprising all information items of a human-readable document. As usual, the outline is hierarchically organized."}],"pig:eligibleProperty":[{"@id":"pig:category"}],"pig:eligibleTargetLink":[{"@id":"pig:lists"}]},{"@id":"pig:View","pig:specializes":{"@id":"pig:Organizer"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"View"}],"dcterms:description":[{"@value":"A subclass of PIG organizer representing a model view (diagram) using a certain notation showing selected model elements."}],"pig:eligibleProperty":[{"@id":"pig:category"},{"@id":"pig:icon"}],"pig:eligibleTargetLink":[{"@id":"pig:shows"},{"@id":"pig:depicts"}]},{"@id":"pig:Relationship","@type":"owl:Class","pig:itemType":{"@id":"pig:Relationship"},"dcterms:title":[{"@value":"Relationship"}],"dcterms:description":[{"@value":"A PIG meta-model element used for reified relationships (aka predicates)."}],"pig:eligibleProperty":[{"@id":"pig:category"},{"@id":"pig:icon"}],"pig:eligibleSourceLink":{"@id":"pig:SourceLink"},"pig:eligibleTargetLink":{"@id":"pig:TargetLink"}},{"@id":"pig:Property","@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"dcterms:title":[{"@value":"Property"}],"dcterms:description":[{"@value":"A PIG meta-model element used for properties (aka attributes)."}],"sh:datatype":{"@id":"xs:anyType"}},{"@id":"pig:icon","pig:specializes":{"@id":"pig:Property"},"pig:itemType":{"@id":"pig:Property"},"dcterms:title":[{"@value":"has icon"}],"dcterms:description":[{"@value":"Specifies an icon for a model element (entity or relationship)."}],"sh:datatype":{"@id":"xs:string"},"sh:minCount":0,"sh:maxCount":1},{"@id":"pig:category","pig:specializes":{"@id":"dcterms:type"},"pig:itemType":{"@id":"pig:Property"},"dcterms:title":[{"@value":"has category"}],"dcterms:description":[{"@value":"Specifies a category for an element (entity, relationship or organizer)."}],"sh:datatype":{"@id":"xs:string"},"sh:maxLength":32,"sh:minCount":0,"sh:maxCount":1},{"@id":"pig:Link","@type":"owl:ObjectProperty","pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"linked with"}],"dcterms:description":[{"@value":"Connects a reified relationship with its source or target. Also connects an organizer to a model element"}]},{"@id":"pig:SourceLink","pig:specializes":{"@id":"pig:Link"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"to source"}],"dcterms:description":[{"@value":"Connects the source of a reified relationship."}]},{"@id":"pig:TargetLink","pig:specializes":{"@id":"pig:Link"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"to target"}],"dcterms:description":[{"@value":"Connects the target of a reified relationship or an organizer."}]},{"@id":"pig:lists","pig:specializes":{"@id":"pig:TargetLink"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"},{"@id":"pig:Organizer"}],"dcterms:title":[{"@value":"lists"}],"dcterms:description":[{"@value":"Lists an entity, a relationship or a subordinated organizer."}]},{"@id":"pig:shows","pig:specializes":{"@id":"pig:TargetLink"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"shows"}],"dcterms:description":[{"@value":"Shows an entity or a relationship."}]},{"@id":"pig:depicts","pig:specializes":{"@id":"pig:TargetLink"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"}],"dcterms:title":[{"@value":"depicts"}],"dcterms:description":[{"@value":"Depicts an entity; inverse of uml:ownedDiagram."}]},{"@id":"dcterms:title","dcterms:title":[{"@value":"Title","@language":"en"},{"@value":"Titel","@language":"de"},{"@value":"Titre","@language":"fr"}],"dcterms:description":[{"@value":"

A name given to the resource. (source: DCMI)

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. (source: OSLC)

","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"},"sh:maxCount":1,"sh:maxLength":256},{"@id":"dcterms:description","dcterms:title":[{"@value":"Description","@language":"en"},{"@value":"Beschreibung","@language":"de"},{"@value":"Description","@language":"fr"}],"dcterms:description":[{"@value":"

An account of the resource. (source: DCMI)

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. (source: OSLC)

","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"},"sh:maxCount":1},{"@id":"SpecIF:Diagram","dcterms:title":[{"@value":"Diagram","@language":"en"},{"@value":"Diagramm","@language":"de"},{"@value":"Diagramme","@language":"fr"}],"dcterms:description":[{"@value":"A diagram illustrating the resource or a link to a diagram.","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"}},{"@id":"dcterms:type","dcterms:title":[{"@value":"Element Type","@language":"en"},{"@value":"Element-Typ","@language":"de"},{"@value":"Type d'élément","@language":"fr"}],"dcterms:description":[{"@value":"

The nature or genre of the resource. (source: DCMI)

Recommended best practice is to use a controlled vocabulary such as the DCMI Type Vocabulary [DCMITYPE]. To describe the file format, physical medium, or dimensions of the resource, use the Format element.

For example, a [[FMC:Actor]] may represent a System Function, a System Component or a User Role. Similarly, in the context of process modelling, a FMC:Actor may represent a Process Step or again a User Role. So, all of these are meaningful values for a FMC:Actor's property named dcterms:type.

","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"},"sh:maxCount":1,"sh:maxLength":32},{"@id":"SpecIF:Priority","dcterms:title":[{"@value":"Priority","@language":"en"},{"@value":"Priorität","@language":"de"},{"@value":"Priorité","@language":"fr"}],"dcterms:description":[{"@value":"Enumerated values for the 'Priority' of the resource.","@language":"en"}],"@type":"owl:ObjectProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"},"pig:eligibleValue":[{"@id":"SpecIF:priorityHigh","dcterms:title":[{"@value":"high","@language":"en"},{"@value":"hoch","@language":"de"},{"@value":"haut","@language":"fr"}]},{"@id":"SpecIF:priorityRatherHigh","dcterms:title":[{"@value":"rather high","@language":"en"},{"@value":"eher hoch","@language":"de"},{"@value":"plutôt haut","@language":"fr"}]},{"@id":"SpecIF:priorityMedium","dcterms:title":[{"@value":"medium","@language":"en"},{"@value":"mittel","@language":"de"},{"@value":"moyen","@language":"fr"}]},{"@id":"SpecIF:priorityRatherLow","dcterms:title":[{"@value":"rather low","@language":"en"},{"@value":"eher niedrig","@language":"de"},{"@value":"plutôt bas","@language":"fr"}]},{"@id":"SpecIF:priorityLow","dcterms:title":[{"@value":"low","@language":"en"},{"@value":"niedrig","@language":"de"},{"@value":"bas","@language":"fr"}]}]},{"@id":"SpecIF:Paragraph","dcterms:title":[{"@value":"Paragraph","@language":"en"},{"@value":"Textabsatz","@language":"de"},{"@value":"Paragraphe","@language":"fr"}],"dcterms:description":[{"@value":"

A 'Paragraph' is an unspecified information in a document at any level.

","@language":"en"},{"@value":"

Ein 'Textabschnitt' in einem Dokument auf beliebiger Ebene.

","@language":"de"}],"pig:specializes":{"@id":"pig:Entity"},"pig:eligibleProperty":[{"@id":"SpecIF:Diagram"},{"@id":"dcterms:type"}],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"SpecIF:Heading","dcterms:title":[{"@value":"Heading","@language":"en"},{"@value":"Überschrift","@language":"de"},{"@value":"Intitulé","@language":"fr"}],"dcterms:description":[{"@value":"A 'Heading' is a chapter title at any level with optional description.","@language":"en"},{"@value":"Eine 'Überschrift' in einem Dokument ist der Titel eines Kapitels. Sie kann eine Beschreibung haben, die als Einleitung oder Zusammenfassung des Kapitels genutzt werden kann.","@language":"de"}],"pig:specializes":{"@id":"SpecIF:Paragraph"},"pig:eligibleProperty":[],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"IREB:Requirement","dcterms:title":[{"@value":"Requirement","@language":"en"},{"@value":"Anforderung","@language":"de"},{"@value":"Exigence","@language":"fr"}],"dcterms:description":[{"@value":"

A 'Requirement' is a singular documented physical and functional need that a particular design, product or process must be able to perform. (source: Wikipedia)

Definition:

  1. A condition or capability needed by a user to solve a problem or achieve an objective.
  2. A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed documents.
  3. A documented representation of a condition or capability as in (1) or (2).

Note: The definition above is the classic one from IEEE Std 610.12 of 1990. Alternatively, we also give a more modern definition:

  1. A need perceived by a stakeholder.
  2. A capability or property that a system shall have.
  3. A documented representation of a need, capability or property.
","@language":"en"},{"@value":"

Eine 'Anforderung' ist ein einzelnes dokumentiertes physisches und funktionales Bedürfnis, das ein bestimmter Entwurf, ein Produkt oder ein Prozess erfüllen muss. (source: Wikipedia)

Definition:

  1. Eine Bedingung oder Fähigkeit, die ein Benutzer benötigt, um ein Problem zu lösen oder ein Ziel zu erreichen.
  2. Eine Bedingung oder Fähigkeit, die ein System oder eine Systemkomponente erfüllen oder besitzen muss, um einen Vertrag, eine Norm, eine Spezifikation oder ein anderes formal vorgeschriebenes Dokument zu erfüllen.
  3. Eine dokumentierte Darstellung einer Bedingung oder Fähigkeit wie in (1) oder (2).

Anmerkung: Die obige Definition ist die klassische Definition aus IEEE Std 610.12 von 1990. Alternativ geben wir auch eine modernere Definition an:

  1. Ein von einem Stakeholder wahrgenommener Bedarf.
  2. Eine Fähigkeit oder Eigenschaft, die ein System haben soll.
  3. Eine dokumentierte Darstellung eines Bedarfs, einer Fähigkeit oder Eigenschaft.
","@language":"de"},{"@value":"

Une 'Exigence' est un besoin physique et fonctionnel unique et documenté qu'une conception, un produit ou un processus particulier doit pouvoir satisfaire. (source: Wikipedia)

Définition:

  1. Condition ou capacité dont un utilisateur a besoin pour résoudre un problème ou atteindre un objectif.
  2. Condition ou capacité qui doit être remplie ou possédée par un système ou un composant de système pour satisfaire à un contrat, à une norme, à une spécification ou à d'autres documents imposés officiellement.
  3. Une représentation documentée d'une condition ou d'une capacité comme dans (1) ou (2).

Remarque: La définition ci-dessus est la définition classique de la norme IEEE 610.12 de 1990. Nous donnons également une définition plus moderne:

  1. Un besoin perçu par une partie prenante;
  2. Une capacité ou une propriété qu'un système doit avoir.
  3. Une représentation documentée d'un besoin, d'une capacité ou d'une propriété.
","@language":"fr"}],"pig:specializes":{"@id":"pig:Entity"},"pig:icon":{"@value":"↯"},"pig:eligibleProperty":[{"@id":"SpecIF:Priority"}],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"d:Req-35100bca2b005ba","@type":"IREB:Requirement","dcterms:modified":"2020-03-26T22:59:00+02:00","dcterms:title":[{"@value":"Minimum button size","@language":"en"}],"dcterms:description":[{"@value":"

The button size MUST not be less than 20mm in diameter.

","@language":"en"}],"SpecIF:Priority":[{"@id":"SpecIF:priorityRatherHigh","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:HierarchyRoot-P-Requirement-with-Enumerated-Property","@type":"pig:HierarchyRoot","pig:itemType":{"@id":"pig:anEntity"},"dcterms:modified":"2026-01-17T22:31:13.255Z","dcterms:title":[{"@value":"Hierarchy Root"}],"dcterms:description":[{"@value":"... anchoring all hierarchies of this graph (package)"}],"pig:lists":[{"@id":"d:HR-bca801377e3d1547","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:HR-bca801377e3d1547","@type":"SpecIF:Heading","dcterms:modified":"2026-01-17T22:31:13.146Z","dcterms:title":[{"@value":"Project 'Requirement with Enumerated Property'"}],"dcterms:type":[{"@value":"ReqIF:HierarchyRoot","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"},"pig:lists":[{"@id":"d:Req-35100bca2b005ba","pig:itemType":{"@id":"pig:aTargetLink"}}]}]} \ No newline at end of file +{"@context":{"o":"https://product-information-graph.org/v0.2/ontology#","d":"https://product-information-graph.org/examples/05_Requirement-with-Enumerated-Property.specif#","rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","owl":"http://www.w3.org/2002/07/owl#","sh":"http://www.w3.org/ns/shacl#","xs":"http://www.w3.org/2001/XMLSchema#","dcterms":"http://purl.org/dc/terms/","IREB":"https://cpre.ireb.org/en/downloads-and-resources/glossary#","ReqIF":"https://www.prostep.org/fileadmin/downloads/PSI_ImplementationGuide_ReqIF_V1-7.pdf#","pig":"https://product-information-graph.org/v0.2/metamodel#","SpecIF":"https://specif.de/v1.2/schema#"},"@id":"d:P-Requirement-with-Enumerated-Property","@type":"pig:Package","dcterms:title":[{"@value":"Project 'Requirement with Enumerated Property'"}],"dcterms:modified":"2026-01-17T22:31:13.052Z","@graph":[{"@id":"pig:Entity","@type":"owl:Class","pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Entity"}],"dcterms:description":[{"@value":"A PIG meta-model element used for entities (aka resources or artifacts)."}],"pig:eligibleProperty":[{"@id":"pig:category"},{"@id":"pig:icon"}]},{"@id":"pig:Organizer","pig:specializes":{"@id":"pig:Entity"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Organizer"}],"dcterms:description":[{"@value":"An element organizing model elements. An example is a list of requirements or a diagram using a certain notation."}],"pig:eligibleProperty":[{"@id":"pig:category"}]},{"@id":"pig:HierarchyRoot","pig:specializes":{"@id":"pig:Organizer"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Hierarchy Root"}],"dcterms:description":[{"@value":"A subclass of PIG organizer serving as a root for hierarchically organized graph elements."}],"pig:eligibleProperty":[],"pig:eligibleTargetLink":[{"@id":"pig:lists"}]},{"@id":"pig:Outline","pig:specializes":{"@id":"pig:Organizer"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Outline"}],"dcterms:description":[{"@value":"A subclass of PIG organizer comprising all information items of a human-readable document. As usual, the outline is hierarchically organized."}],"pig:eligibleProperty":[{"@id":"pig:category"}],"pig:eligibleTargetLink":[{"@id":"pig:lists"}]},{"@id":"pig:View","pig:specializes":{"@id":"pig:Organizer"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"View"}],"dcterms:description":[{"@value":"A subclass of PIG organizer representing a model view (diagram) using a certain notation showing selected model elements."}],"pig:eligibleProperty":[{"@id":"pig:category"},{"@id":"pig:icon"}],"pig:eligibleTargetLink":[{"@id":"pig:shows"},{"@id":"pig:depicts"}]},{"@id":"pig:Relationship","@type":"owl:Class","pig:itemType":{"@id":"pig:Relationship"},"dcterms:title":[{"@value":"Relationship"}],"dcterms:description":[{"@value":"A PIG meta-model element used for reified relationships (aka predicates)."}],"pig:eligibleProperty":[{"@id":"pig:category"},{"@id":"pig:icon"}],"pig:eligibleSourceLink":{"@id":"pig:SourceLink"},"pig:eligibleTargetLink":{"@id":"pig:TargetLink"}},{"@id":"pig:Property","@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"dcterms:title":[{"@value":"Property"}],"dcterms:description":[{"@value":"A PIG meta-model element used for properties (aka attributes)."}],"sh:datatype":{"@id":"xs:anyType"}},{"@id":"pig:icon","pig:specializes":{"@id":"pig:Property"},"pig:itemType":{"@id":"pig:Property"},"dcterms:title":[{"@value":"has icon"}],"dcterms:description":[{"@value":"Specifies an icon for a model element (entity or relationship)."}],"sh:datatype":{"@id":"xs:string"},"sh:minCount":0,"sh:maxCount":1},{"@id":"pig:category","pig:specializes":{"@id":"pig:Property"},"pig:itemType":{"@id":"pig:Property"},"dcterms:title":[{"@value":"has category"}],"dcterms:description":[{"@value":"Specifies a category for an element (entity, relationship or organizer)."}],"sh:datatype":{"@id":"xs:string"},"sh:maxLength":32,"sh:minCount":0,"sh:maxCount":1},{"@id":"pig:Link","@type":"owl:ObjectProperty","pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"linked with"}],"dcterms:description":[{"@value":"Connects a reified relationship with its source or target. Also connects an organizer to a model element"}]},{"@id":"pig:SourceLink","pig:specializes":{"@id":"pig:Link"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"to source"}],"dcterms:description":[{"@value":"Connects the source of a reified relationship."}]},{"@id":"pig:TargetLink","pig:specializes":{"@id":"pig:Link"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"to target"}],"dcterms:description":[{"@value":"Connects the target of a reified relationship or an organizer."}]},{"@id":"pig:lists","pig:specializes":{"@id":"pig:TargetLink"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"},{"@id":"pig:Organizer"}],"dcterms:title":[{"@value":"lists"}],"dcterms:description":[{"@value":"Lists an entity, a relationship or a subordinated organizer."}]},{"@id":"pig:shows","pig:specializes":{"@id":"pig:TargetLink"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"shows"}],"dcterms:description":[{"@value":"Shows an entity or a relationship."}]},{"@id":"pig:depicts","pig:specializes":{"@id":"pig:TargetLink"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"}],"dcterms:title":[{"@value":"depicts"}],"dcterms:description":[{"@value":"Depicts an entity; inverse of uml:ownedDiagram."}]},{"@id":"dcterms:title","dcterms:title":[{"@value":"Title","@language":"en"},{"@value":"Titel","@language":"de"},{"@value":"Titre","@language":"fr"}],"dcterms:description":[{"@value":"

A name given to the resource. (source: DCMI)

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. (source: OSLC)

","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"},"sh:maxCount":1,"sh:maxLength":256},{"@id":"dcterms:description","dcterms:title":[{"@value":"Description","@language":"en"},{"@value":"Beschreibung","@language":"de"},{"@value":"Description","@language":"fr"}],"dcterms:description":[{"@value":"

An account of the resource. (source: DCMI)

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. (source: OSLC)

","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"},"sh:maxCount":1},{"@id":"SpecIF:Diagram","dcterms:title":[{"@value":"Diagram","@language":"en"},{"@value":"Diagramm","@language":"de"},{"@value":"Diagramme","@language":"fr"}],"dcterms:description":[{"@value":"A diagram illustrating the resource or a link to a diagram.","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"}},{"@id":"dcterms:type","dcterms:title":[{"@value":"Element Type","@language":"en"},{"@value":"Element-Typ","@language":"de"},{"@value":"Type d'élément","@language":"fr"}],"dcterms:description":[{"@value":"

The nature or genre of the resource. (source: DCMI)

Recommended best practice is to use a controlled vocabulary such as the DCMI Type Vocabulary [DCMITYPE]. To describe the file format, physical medium, or dimensions of the resource, use the Format element.

For example, a [[FMC:Actor]] may represent a System Function, a System Component or a User Role. Similarly, in the context of process modelling, a FMC:Actor may represent a Process Step or again a User Role. So, all of these are meaningful values for a FMC:Actor's property named dcterms:type.

","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"},"sh:maxCount":1,"sh:maxLength":32},{"@id":"SpecIF:Priority","dcterms:title":[{"@value":"Priority","@language":"en"},{"@value":"Priorität","@language":"de"},{"@value":"Priorité","@language":"fr"}],"dcterms:description":[{"@value":"Enumerated values for the 'Priority' of the resource.","@language":"en"}],"@type":"owl:ObjectProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"},"pig:eligibleValue":[{"@id":"SpecIF:priorityHigh","dcterms:title":[{"@value":"high","@language":"en"},{"@value":"hoch","@language":"de"},{"@value":"haut","@language":"fr"}]},{"@id":"SpecIF:priorityRatherHigh","dcterms:title":[{"@value":"rather high","@language":"en"},{"@value":"eher hoch","@language":"de"},{"@value":"plutôt haut","@language":"fr"}]},{"@id":"SpecIF:priorityMedium","dcterms:title":[{"@value":"medium","@language":"en"},{"@value":"mittel","@language":"de"},{"@value":"moyen","@language":"fr"}]},{"@id":"SpecIF:priorityRatherLow","dcterms:title":[{"@value":"rather low","@language":"en"},{"@value":"eher niedrig","@language":"de"},{"@value":"plutôt bas","@language":"fr"}]},{"@id":"SpecIF:priorityLow","dcterms:title":[{"@value":"low","@language":"en"},{"@value":"niedrig","@language":"de"},{"@value":"bas","@language":"fr"}]}]},{"@id":"SpecIF:Paragraph","dcterms:title":[{"@value":"Paragraph","@language":"en"},{"@value":"Textabsatz","@language":"de"},{"@value":"Paragraphe","@language":"fr"}],"dcterms:description":[{"@value":"

A 'Paragraph' is an unspecified information in a document at any level.

","@language":"en"},{"@value":"

Ein 'Textabschnitt' in einem Dokument auf beliebiger Ebene.

","@language":"de"}],"pig:specializes":{"@id":"pig:Entity"},"pig:eligibleProperty":[{"@id":"SpecIF:Diagram"},{"@id":"dcterms:type"}],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"SpecIF:Heading","dcterms:title":[{"@value":"Heading","@language":"en"},{"@value":"Überschrift","@language":"de"},{"@value":"Intitulé","@language":"fr"}],"dcterms:description":[{"@value":"A 'Heading' is a chapter title at any level with optional description.","@language":"en"},{"@value":"Eine 'Überschrift' in einem Dokument ist der Titel eines Kapitels. Sie kann eine Beschreibung haben, die als Einleitung oder Zusammenfassung des Kapitels genutzt werden kann.","@language":"de"}],"pig:specializes":{"@id":"SpecIF:Paragraph"},"pig:eligibleProperty":[],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"IREB:Requirement","dcterms:title":[{"@value":"Requirement","@language":"en"},{"@value":"Anforderung","@language":"de"},{"@value":"Exigence","@language":"fr"}],"dcterms:description":[{"@value":"

A 'Requirement' is a singular documented physical and functional need that a particular design, product or process must be able to perform. (source: Wikipedia)

Definition:

  1. A condition or capability needed by a user to solve a problem or achieve an objective.
  2. A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed documents.
  3. A documented representation of a condition or capability as in (1) or (2).

Note: The definition above is the classic one from IEEE Std 610.12 of 1990. Alternatively, we also give a more modern definition:

  1. A need perceived by a stakeholder.
  2. A capability or property that a system shall have.
  3. A documented representation of a need, capability or property.
","@language":"en"},{"@value":"

Eine 'Anforderung' ist ein einzelnes dokumentiertes physisches und funktionales Bedürfnis, das ein bestimmter Entwurf, ein Produkt oder ein Prozess erfüllen muss. (source: Wikipedia)

Definition:

  1. Eine Bedingung oder Fähigkeit, die ein Benutzer benötigt, um ein Problem zu lösen oder ein Ziel zu erreichen.
  2. Eine Bedingung oder Fähigkeit, die ein System oder eine Systemkomponente erfüllen oder besitzen muss, um einen Vertrag, eine Norm, eine Spezifikation oder ein anderes formal vorgeschriebenes Dokument zu erfüllen.
  3. Eine dokumentierte Darstellung einer Bedingung oder Fähigkeit wie in (1) oder (2).

Anmerkung: Die obige Definition ist die klassische Definition aus IEEE Std 610.12 von 1990. Alternativ geben wir auch eine modernere Definition an:

  1. Ein von einem Stakeholder wahrgenommener Bedarf.
  2. Eine Fähigkeit oder Eigenschaft, die ein System haben soll.
  3. Eine dokumentierte Darstellung eines Bedarfs, einer Fähigkeit oder Eigenschaft.
","@language":"de"},{"@value":"

Une 'Exigence' est un besoin physique et fonctionnel unique et documenté qu'une conception, un produit ou un processus particulier doit pouvoir satisfaire. (source: Wikipedia)

Définition:

  1. Condition ou capacité dont un utilisateur a besoin pour résoudre un problème ou atteindre un objectif.
  2. Condition ou capacité qui doit être remplie ou possédée par un système ou un composant de système pour satisfaire à un contrat, à une norme, à une spécification ou à d'autres documents imposés officiellement.
  3. Une représentation documentée d'une condition ou d'une capacité comme dans (1) ou (2).

Remarque: La définition ci-dessus est la définition classique de la norme IEEE 610.12 de 1990. Nous donnons également une définition plus moderne:

  1. Un besoin perçu par une partie prenante;
  2. Une capacité ou une propriété qu'un système doit avoir.
  3. Une représentation documentée d'un besoin, d'une capacité ou d'une propriété.
","@language":"fr"}],"pig:specializes":{"@id":"pig:Entity"},"pig:icon":{"@value":"↯"},"pig:eligibleProperty":[{"@id":"SpecIF:Priority"}],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"d:Req-35100bca2b005ba","@type":"IREB:Requirement","dcterms:modified":"2020-03-26T22:59:00+02:00","dcterms:title":[{"@value":"Minimum button size","@language":"en"}],"dcterms:description":[{"@value":"

The button size MUST not be less than 20mm in diameter.

","@language":"en"}],"SpecIF:Priority":[{"@id":"SpecIF:priorityRatherHigh","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:HierarchyRoot-P-Requirement-with-Enumerated-Property","@type":"pig:HierarchyRoot","pig:itemType":{"@id":"pig:anEntity"},"dcterms:modified":"2026-01-17T22:31:13.255Z","dcterms:title":[{"@value":"Hierarchy Root"}],"dcterms:description":[{"@value":"... anchoring all hierarchies of this graph (package)"}],"pig:lists":[{"@id":"d:HR-bca801377e3d1547","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:HR-bca801377e3d1547","@type":"SpecIF:Heading","dcterms:modified":"2026-01-17T22:31:13.146Z","dcterms:title":[{"@value":"Project 'Requirement with Enumerated Property'"}],"dcterms:type":[{"@value":"ReqIF:HierarchyRoot","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"},"pig:lists":[{"@id":"d:Req-35100bca2b005ba","pig:itemType":{"@id":"pig:aTargetLink"}}]}]} \ No newline at end of file diff --git a/tests/data/JSON-LD/11/Alice.pig.jsonld b/tests/data/JSON-LD/11/Alice.pig.jsonld index b2aa39d..fb391cf 100644 --- a/tests/data/JSON-LD/11/Alice.pig.jsonld +++ b/tests/data/JSON-LD/11/Alice.pig.jsonld @@ -255,7 +255,7 @@ { "@id": "pig:category", "pig:specializes": { - "@id": "dcterms:type" + "@id": "pig:Property" }, "pig:itemType": { "@id": "pig:Property" diff --git a/tests/data/JSON-LD/21/Project 'Very Simple Model (FMC) with Requirements'.pig.jsonld b/tests/data/JSON-LD/21/Project 'Very Simple Model (FMC) with Requirements'.pig.jsonld index a627c33..eedc3f1 100644 --- a/tests/data/JSON-LD/21/Project 'Very Simple Model (FMC) with Requirements'.pig.jsonld +++ b/tests/data/JSON-LD/21/Project 'Very Simple Model (FMC) with Requirements'.pig.jsonld @@ -240,7 +240,7 @@ { "@id": "pig:category", "pig:specializes": { - "@id": "dcterms:type" + "@id": "pig:Property" }, "pig:itemType": { "@id": "pig:Property" diff --git a/tests/data/JSON-LD/22/Small Autonomous Vehicle.pig.jsonld b/tests/data/JSON-LD/22/Small Autonomous Vehicle.pig.jsonld index 4ee70a8..9646ddf 100644 --- a/tests/data/JSON-LD/22/Small Autonomous Vehicle.pig.jsonld +++ b/tests/data/JSON-LD/22/Small Autonomous Vehicle.pig.jsonld @@ -1 +1,8368 @@ -{"@context":{"o":"https://product-information-graph.org/v0.2/ontology#","d":"https://product-information-graph.org/examples/Small%20Autonomous%20Vehicle.specif.zip#","rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","owl":"http://www.w3.org/2002/07/owl#","sh":"http://www.w3.org/ns/shacl#","xs":"http://www.w3.org/2001/XMLSchema#","dcterms":"http://purl.org/dc/terms/","FMC":"http://fmc-modeling.org#","RFLP":"https://product-information-graph.org/v0.2/ontology/RFLP#","IREB":"https://cpre.ireb.org/en/downloads-and-resources/glossary#","ReqIF":"https://www.prostep.org/fileadmin/downloads/PSI_ImplementationGuide_ReqIF_V1-7.pdf#","oslc_rm":"http://open-services.net/ns/rm#","uml":"https://www.omg.org/spec/UML#","sysml":"https://www.omg.org/spec/SysML#","pig":"https://product-information-graph.org/v0.2/metamodel#","SpecIF":"https://specif.de/v1.2/schema#"},"@id":"d:P-eee_1045467100313_135436_1","@type":"pig:Package","dcterms:title":[{"@value":"Small Autonomous Vehicle"}],"dcterms:description":[{"@value":"A set of SpecIF Classes derived from a SpecIF Ontology for the domains SpecIF:DomainBase, SpecIF:DomainSystemsEngineering, SpecIF:DomainSystemModelIntegration.","@language":"en"}],"dcterms:modified":"2026-01-17T22:38:55.612Z","@graph":[{"@id":"pig:Entity","@type":"owl:Class","pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Entity"}],"dcterms:description":[{"@value":"A PIG meta-model element used for entities (aka resources or artifacts)."}],"pig:eligibleProperty":[{"@id":"pig:category"},{"@id":"pig:icon"}]},{"@id":"pig:Organizer","pig:specializes":{"@id":"pig:Entity"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Organizer"}],"dcterms:description":[{"@value":"An element organizing model elements. An example is a list of requirements or a diagram using a certain notation."}],"pig:eligibleProperty":[{"@id":"pig:category"}]},{"@id":"pig:HierarchyRoot","pig:specializes":{"@id":"pig:Organizer"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Hierarchy Root"}],"dcterms:description":[{"@value":"A subclass of PIG organizer serving as a root for hierarchically organized graph elements."}],"pig:eligibleProperty":[],"pig:eligibleTargetLink":[{"@id":"pig:lists"}]},{"@id":"pig:Outline","pig:specializes":{"@id":"pig:Organizer"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"Outline"}],"dcterms:description":[{"@value":"A subclass of PIG organizer comprising all information items of a human-readable document. As usual, the outline is hierarchically organized."}],"pig:eligibleProperty":[{"@id":"pig:category"}],"pig:eligibleTargetLink":[{"@id":"pig:lists"}]},{"@id":"pig:View","pig:specializes":{"@id":"pig:Organizer"},"pig:itemType":{"@id":"pig:Entity"},"dcterms:title":[{"@value":"View"}],"dcterms:description":[{"@value":"A subclass of PIG organizer representing a model view (diagram) using a certain notation showing selected model elements."}],"pig:eligibleProperty":[{"@id":"pig:category"},{"@id":"pig:icon"}],"pig:eligibleTargetLink":[{"@id":"pig:shows"},{"@id":"pig:depicts"}]},{"@id":"pig:Relationship","@type":"owl:Class","pig:itemType":{"@id":"pig:Relationship"},"dcterms:title":[{"@value":"Relationship"}],"dcterms:description":[{"@value":"A PIG meta-model element used for reified relationships (aka predicates)."}],"pig:eligibleProperty":[{"@id":"pig:category"},{"@id":"pig:icon"}],"pig:eligibleSourceLink":{"@id":"pig:SourceLink"},"pig:eligibleTargetLink":{"@id":"pig:TargetLink"}},{"@id":"pig:Property","@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"dcterms:title":[{"@value":"Property"}],"dcterms:description":[{"@value":"A PIG meta-model element used for properties (aka attributes)."}],"sh:datatype":{"@id":"xs:anyType"}},{"@id":"pig:icon","pig:specializes":{"@id":"pig:Property"},"pig:itemType":{"@id":"pig:Property"},"dcterms:title":[{"@value":"has icon"}],"dcterms:description":[{"@value":"Specifies an icon for a model element (entity or relationship)."}],"sh:datatype":{"@id":"xs:string"},"sh:minCount":0,"sh:maxCount":1},{"@id":"pig:category","pig:specializes":{"@id":"dcterms:type"},"pig:itemType":{"@id":"pig:Property"},"dcterms:title":[{"@value":"has category"}],"dcterms:description":[{"@value":"Specifies a category for an element (entity, relationship or organizer)."}],"sh:datatype":{"@id":"xs:string"},"sh:maxLength":32,"sh:minCount":0,"sh:maxCount":1},{"@id":"pig:Link","@type":"owl:ObjectProperty","pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"linked with"}],"dcterms:description":[{"@value":"Connects a reified relationship with its source or target. Also connects an organizer to a model element"}]},{"@id":"pig:SourceLink","pig:specializes":{"@id":"pig:Link"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"to source"}],"dcterms:description":[{"@value":"Connects the source of a reified relationship."}]},{"@id":"pig:TargetLink","pig:specializes":{"@id":"pig:Link"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"to target"}],"dcterms:description":[{"@value":"Connects the target of a reified relationship or an organizer."}]},{"@id":"pig:lists","pig:specializes":{"@id":"pig:TargetLink"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"},{"@id":"pig:Organizer"}],"dcterms:title":[{"@value":"lists"}],"dcterms:description":[{"@value":"Lists an entity, a relationship or a subordinated organizer."}]},{"@id":"pig:shows","pig:specializes":{"@id":"pig:TargetLink"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}],"dcterms:title":[{"@value":"shows"}],"dcterms:description":[{"@value":"Shows an entity or a relationship."}]},{"@id":"pig:depicts","pig:specializes":{"@id":"pig:TargetLink"},"pig:itemType":{"@id":"pig:Link"},"pig:eligibleEndpoint":[{"@id":"pig:Entity"}],"dcterms:title":[{"@value":"depicts"}],"dcterms:description":[{"@value":"Depicts an entity; inverse of uml:ownedDiagram."}]},{"@id":"dcterms:title","dcterms:title":[{"@value":"Title","@language":"en"},{"@value":"Titel","@language":"de"},{"@value":"Titre","@language":"fr"}],"dcterms:description":[{"@value":"

A name given to the resource. (source: DCMI)

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. (source: OSLC)

","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"},"sh:maxCount":1,"sh:maxLength":256},{"@id":"dcterms:description","dcterms:title":[{"@value":"Description","@language":"en"},{"@value":"Beschreibung","@language":"de"},{"@value":"Description","@language":"fr"}],"dcterms:description":[{"@value":"

An account of the resource. (source: DCMI)

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. (source: OSLC)

","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"},"sh:maxCount":1},{"@id":"SpecIF:Diagram","dcterms:title":[{"@value":"Diagram","@language":"en"},{"@value":"Diagramm","@language":"de"},{"@value":"Diagramme","@language":"fr"}],"dcterms:description":[{"@value":"A diagram illustrating the resource or a link to a diagram.","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"}},{"@id":"SpecIF:Notation","dcterms:title":[{"@value":"Notation","@language":"en"}],"dcterms:description":[{"@value":"The notation used by a model diagram, e.g. 'BPMN 2.0', 'SysML Activity Diagram' or 'FMC Block Diagram'.","@language":"en"}],"@type":"owl:DatatypeProperty","pig:itemType":{"@id":"pig:Property"},"sh:datatype":{"@id":"xs:string"},"sh:maxCount":1,"sh:maxLength":32},{"@id":"SpecIF:Paragraph","dcterms:title":[{"@value":"Paragraph","@language":"en"},{"@value":"Textabsatz","@language":"de"},{"@value":"Paragraphe","@language":"fr"}],"dcterms:description":[{"@value":"

A 'Paragraph' is an unspecified information in a document at any level.

","@language":"en"},{"@value":"

Ein 'Textabschnitt' in einem Dokument auf beliebiger Ebene.

","@language":"de"}],"pig:specializes":{"@id":"pig:Entity"},"pig:eligibleProperty":[{"@id":"SpecIF:Diagram"},{"@id":"pig:category"}],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"SpecIF:ModelElement","dcterms:title":[{"@value":"Model Element","@language":"en"},{"@value":"Modellelement","@language":"de"}],"dcterms:description":[{"@value":"Is a generalized type for model elements.","@language":"en"},{"@value":"Ist ein generalisierter Typ für Modellelemente.","@language":"de"}],"pig:specializes":{"@id":"pig:Entity"},"pig:icon":{"@value":"☆"},"pig:eligibleProperty":[{"@id":"pig:category"}],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"FMC:Actor","dcterms:title":[{"@value":"Actor","@language":"en"},{"@value":"Akteur","@language":"de"},{"@value":"Acteur","@language":"fr"}],"dcterms:description":[{"@value":"

An 'Actor' is a fundamental model element type representing an active entity, be it an activity, a process step, a function, a system component or a role.

The particular use or original type is specified with a [[dcterms:type]] property of the 'FMC:Actor'. A value of that property should be an ontology-term, such as [[bpmn:processStep]].

","@language":"en"},{"@value":"

Ein 'Akteur' ist ein fundamentaler Modellelementtyp, der eine aktive Entität darstellt, sei es eine Aktivität, ein Prozessschritt, eine Funktion, eine Systemkomponente oder eine Rolle.

Die spezielle Verwendung oder der ursprüngliche Typ wird mit einer [[dcterms:type]] Eigenschaft von 'FMC:Actor' spezifiziert. Die Werte dieser Eigenschaft können Ontologiebegriffe sein, wie z.B. [[bpmn:timer]].

","@language":"de"},{"@value":"

Un 'Acteur' est un type d'élément de modèle fondamental représentant une entité active, qu'il s'agisse d'une activité, d'une étape de processus, d'une fonction, d'un composant de système ou d'un rôle.

L'utilisation particulière ou le type original est spécifié avec une propriété [[dcterms:type]] de 'FMC:Actor'. Les valeurs de cette propriété peuvent être des termes d'ontologie, tels que [[bpmn:timer]].

","@language":"fr"}],"pig:specializes":{"@id":"SpecIF:ModelElement"},"pig:icon":{"@value":"□"},"pig:eligibleProperty":[],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"SpecIF:Collection","dcterms:title":[{"@value":"Collection or Group","@language":"en"},{"@value":"Kollektion oder Gruppe","@language":"de"},{"@value":"Collection ou Groupe","@language":"fr"}],"dcterms:description":[{"@value":"

A 'Collection' is a logical (often conceptual) group of resources linked with a [[SpecIF:contains]] statement. It corresponds to a 'Group' in BPMN Diagrams.

BPMN: An arbitrary set of objects can be defined as a Group to show that they logically belong together. (source: BPMN Tutorial)

","@language":"en"},{"@value":"

Eine 'Kollektion' ist eine logische Gruppierung bestimmter Modellelemente, die per [[SpecIF:contains]] Relation zusammen gefasst sind. Sie entspricht einer 'Gruppe' in BPMN Diagrammen. (source: BPMN Tutorial)

","@language":"de"},{"@value":"

Une 'collection' est un groupe logique (souvent conceptuel) de ressources liées par une déclaration [[SpecIF:contains]]. Elle correspond à un 'groupe' dans les diagrammes BPMN. (source: BPMN Tutoriel)

","@language":"fr"}],"pig:specializes":{"@id":"SpecIF:ModelElement"},"pig:icon":{"@value":"⬚"},"pig:eligibleProperty":[],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"FMC:State","dcterms:title":[{"@value":"State","@language":"en"},{"@value":"Zustand","@language":"de"},{"@value":"État","@language":"fr"}],"dcterms:description":[{"@value":"

A 'State' is a fundamental model element type representing a passive entity, be it a value, a condition, an information storage or even a physical shape.

The particular use or the original type is specified with a [[dcterms:type]] property of the 'FMC:State'. A value of that property should bean ontology-term, such as [[bpmn:dataObject]].

","@language":"en"},{"@value":"

Ein 'Zustand' ist ein fundamentaler Modellelementtyp, der eine passive Entität darstellt, sei es ein Wert, ein Dokument, ein Informationsspeicher, eine Bedingung oder eine physische Beschaffenheit.

Die spezielle Verwendung oder der ursprüngliche Typ wird mit einer [[dcterms:type]] Eigenschaft von 'FMC:State' spezifiziert. Die Werte dieser Eigenschaft können Ontologiebegriffe sein, wie z.B. [[ArchiMate:DataObject]].

","@language":"de"},{"@value":"

Un 'État' est un type d'élément de modèle fondamental représentant une entité passive, qu'il s'agisse d'une valeur, d'une condition, d'un stockage d'informations ou même d'une forme physique.

L'utilisation particulière ou le type original est spécifié avec une propriété [[dcterms:type]] de 'FMC:State'. Les valeurs de cette propriété peuvent être des termes d'ontologie, tels que [[ArchiMate:DataObject]].

","@language":"fr"}],"pig:specializes":{"@id":"SpecIF:ModelElement"},"pig:icon":{"@value":"○"},"pig:eligibleProperty":[],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"FMC:Event","dcterms:title":[{"@value":"Event","@language":"en"},{"@value":"Ereignis","@language":"de"},{"@value":"Évenement","@language":"fr"}],"dcterms:description":[{"@value":"

An 'Event' is a fundamental model element type representing a time reference, a change in condition/value or more generally a synchronization primitive.

The particular use or the original type is specified with a [[dcterms:type]] property of the 'FMC:Event'. A value of that property should be an ontology-term, such as [[bpmn:startEvent]].

","@language":"en"},{"@value":"

Ein 'Ereignis' ist ein fundamentaler Modellelementtyp, der eine Zeitreferenz, eine Änderung einer Bedingung/eines Wertes oder allgemeiner ein Synchronisationsmittel darstellt.

Die spezielle Verwendung oder der ursprüngliche Typ wird mit einer [[dcterms:type]] Eigenschaft von 'FMC:Event' spezifiziert. Die Werte dieser Eigenschaft sollen Ontologiebegriffe sein, wie z.B. [[bpmn:startEvent]].

","@language":"de"},{"@value":"

Un 'Événement' est un type d'élément de modèle fondamental représentant une référence temporelle, un changement de condition/valeur ou plus généralement une primitive de synchronisation.

L'utilisation particulière ou le type original est spécifié avec une propriété [[dcterms:type]] de 'FMC:Event'. Les valeurs de cette propriété peuvent être des termes d'ontologie, tels que [[bpmn:startEvent]].

","@language":"fr"}],"pig:specializes":{"@id":"SpecIF:ModelElement"},"pig:icon":{"@value":"♢"},"pig:eligibleProperty":[],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"uml:Package","dcterms:title":[{"@value":"Package","@language":"en"}],"pig:specializes":{"@id":"SpecIF:Collection"},"pig:eligibleProperty":[],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"IREB:Requirement","dcterms:title":[{"@value":"Requirement","@language":"en"},{"@value":"Anforderung","@language":"de"},{"@value":"Exigence","@language":"fr"}],"dcterms:description":[{"@value":"

A 'Requirement' is a singular documented physical and functional need that a particular design, product or process must be able to perform. (source: Wikipedia)

Definition:

  1. A condition or capability needed by a user to solve a problem or achieve an objective.
  2. A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed documents.
  3. A documented representation of a condition or capability as in (1) or (2).

Note: The definition above is the classic one from IEEE Std 610.12 of 1990. Alternatively, we also give a more modern definition:

  1. A need perceived by a stakeholder.
  2. A capability or property that a system shall have.
  3. A documented representation of a need, capability or property.
","@language":"en"},{"@value":"

Eine 'Anforderung' ist ein einzelnes dokumentiertes physisches und funktionales Bedürfnis, das ein bestimmter Entwurf, ein Produkt oder ein Prozess erfüllen muss. (source: Wikipedia)

Definition:

  1. Eine Bedingung oder Fähigkeit, die ein Benutzer benötigt, um ein Problem zu lösen oder ein Ziel zu erreichen.
  2. Eine Bedingung oder Fähigkeit, die ein System oder eine Systemkomponente erfüllen oder besitzen muss, um einen Vertrag, eine Norm, eine Spezifikation oder ein anderes formal vorgeschriebenes Dokument zu erfüllen.
  3. Eine dokumentierte Darstellung einer Bedingung oder Fähigkeit wie in (1) oder (2).

Anmerkung: Die obige Definition ist die klassische Definition aus IEEE Std 610.12 von 1990. Alternativ geben wir auch eine modernere Definition an:

  1. Ein von einem Stakeholder wahrgenommener Bedarf.
  2. Eine Fähigkeit oder Eigenschaft, die ein System haben soll.
  3. Eine dokumentierte Darstellung eines Bedarfs, einer Fähigkeit oder Eigenschaft.
","@language":"de"},{"@value":"

Une 'Exigence' est un besoin physique et fonctionnel unique et documenté qu'une conception, un produit ou un processus particulier doit pouvoir satisfaire. (source: Wikipedia)

Définition:

  1. Condition ou capacité dont un utilisateur a besoin pour résoudre un problème ou atteindre un objectif.
  2. Condition ou capacité qui doit être remplie ou possédée par un système ou un composant de système pour satisfaire à un contrat, à une norme, à une spécification ou à d'autres documents imposés officiellement.
  3. Une représentation documentée d'une condition ou d'une capacité comme dans (1) ou (2).

Remarque: La définition ci-dessus est la définition classique de la norme IEEE 610.12 de 1990. Nous donnons également une définition plus moderne:

  1. Un besoin perçu par une partie prenante;
  2. Une capacité ou une propriété qu'un système doit avoir.
  3. Une représentation documentée d'un besoin, d'une capacité ou d'une propriété.
","@language":"fr"}],"pig:specializes":{"@id":"pig:Entity"},"pig:icon":{"@value":"↯"},"pig:eligibleProperty":[{"@id":"pig:category"}],"pig:eligibleTargetLink":[],"pig:itemType":{"@id":"pig:Entity"}},{"@id":"SpecIF:relates","dcterms:title":[{"@value":"relates","@language":"en"},{"@value":"verbindet","@language":"de"},{"@value":"relie","@language":"fr"}],"dcterms:description":[{"@value":"Is a generalized type for model relations.","@language":"en"},{"@value":"Ist ein generalisierter Typ für Modellrelationen.","@language":"de"}],"pig:specializes":{"@id":"pig:Relationship"},"pig:eligibleProperty":[{"@id":"pig:category"}],"pig:itemType":{"@id":"pig:Relationship"},"pig:eligibleSourceLink":{"@id":"SpecIF:relates-toSource"},"pig:eligibleTargetLink":{"@id":"SpecIF:relates-toTarget"}},{"@id":"SpecIF:relates-toSource","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:SourceLink"},"dcterms:title":[{"@value":"SpecIF:relates to source"}],"dcterms:description":[{"@value":"Connects the source of SpecIF:relates"}],"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}]},{"@id":"SpecIF:relates-toTarget","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:TargetLink"},"dcterms:title":[{"@value":"SpecIF:relates to target"}],"dcterms:description":[{"@value":"Connects the target of SpecIF:relates"}],"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}]},{"@id":"dcterms:hasPart","dcterms:title":[{"@value":"has part","@language":"en"},{"@value":"enthält","@language":"de"},{"@value":"contient","@language":"fr"}],"dcterms:description":[{"@value":"A related resource that is included either physically or logically in the described resource.\n\n*Comment: This property is intended to be used with non-literal values. This property is an inverse property of [[dcterms:isPartOf]].*","@language":"en"}],"pig:specializes":{"@id":"SpecIF:relates"},"pig:eligibleProperty":[],"pig:itemType":{"@id":"pig:Relationship"},"pig:eligibleSourceLink":{"@id":"dcterms:hasPart-toSource"},"pig:eligibleTargetLink":{"@id":"dcterms:hasPart-toTarget"}},{"@id":"dcterms:hasPart-toSource","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:SourceLink"},"dcterms:title":[{"@value":"dcterms:hasPart to source"}],"dcterms:description":[{"@value":"Connects the source of dcterms:hasPart"}],"pig:eligibleEndpoint":[{"@id":"FMC:Actor"},{"@id":"FMC:State"},{"@id":"SpecIF:Collection"},{"@id":"SpecIF:ModelElement"},{"@id":"o:RC-UmlClass"}]},{"@id":"dcterms:hasPart-toTarget","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:TargetLink"},"dcterms:title":[{"@value":"dcterms:hasPart to target"}],"dcterms:description":[{"@value":"Connects the target of dcterms:hasPart"}],"pig:eligibleEndpoint":[{"@id":"FMC:Actor"},{"@id":"FMC:State"},{"@id":"SpecIF:Collection"},{"@id":"SpecIF:ModelElement"},{"@id":"o:RC-UmlPort"},{"@id":"o:RC-UmlClass"}]},{"@id":"SpecIF:contains","dcterms:title":[{"@value":"contains","@language":"en"},{"@value":"enthält","@language":"de"},{"@value":"contient","@language":"fr"}],"dcterms:description":[{"@value":"General containment, such as:\n- Package-A *contains* Diagram-B\n- Collection-1 *contains* DataObject-1.1\n\nNot to confound with *[[dcterms:hasPart]]*.","@language":"en"}],"pig:specializes":{"@id":"SpecIF:relates"},"pig:eligibleProperty":[],"pig:itemType":{"@id":"pig:Relationship"},"pig:eligibleSourceLink":{"@id":"SpecIF:contains-toSource"},"pig:eligibleTargetLink":{"@id":"SpecIF:contains-toTarget"}},{"@id":"SpecIF:contains-toSource","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:SourceLink"},"dcterms:title":[{"@value":"SpecIF:contains to source"}],"dcterms:description":[{"@value":"Connects the source of SpecIF:contains"}],"pig:eligibleEndpoint":[{"@id":"FMC:Actor"},{"@id":"FMC:State"},{"@id":"SpecIF:Collection"},{"@id":"uml:Package"}]},{"@id":"SpecIF:contains-toTarget","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:TargetLink"},"dcterms:title":[{"@value":"SpecIF:contains to target"}],"dcterms:description":[{"@value":"Connects the target of SpecIF:contains"}],"pig:eligibleEndpoint":[{"@id":"FMC:Actor"},{"@id":"FMC:State"},{"@id":"FMC:Event"},{"@id":"SpecIF:Collection"},{"@id":"uml:Package"},{"@id":"SpecIF:ModelElement"},{"@id":"o:RC-SpecifView"},{"@id":"o:RC-PigView"},{"@id":"pig:View"},{"@id":"IREB:Requirement"}]},{"@id":"oslc_rm:satisfies","dcterms:title":[{"@value":"satisfies","@language":"en"},{"@value":"erfüllt","@language":"de"},{"@value":"satisfait","@language":"fr"}],"dcterms:description":[{"@value":"

The object is satisfied by the subject. (source: OSLC)

SpecIF suggests that the subject is confined to a model element, e.g, a [[FMC:Actor]] or [[FMC:State]], and the object is confined to a [[IREB:Requirement]]. More concretely, an example for this type of statement is 'Component-X satisfies 'Requirement-4711'.

","@language":"en"}],"pig:specializes":{"@id":"pig:Relationship"},"pig:eligibleProperty":[],"pig:itemType":{"@id":"pig:Relationship"},"pig:eligibleSourceLink":{"@id":"oslc_rm:satisfies-toSource"},"pig:eligibleTargetLink":{"@id":"oslc_rm:satisfies-toTarget"}},{"@id":"oslc_rm:satisfies-toSource","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:SourceLink"},"dcterms:title":[{"@value":"oslc_rm:satisfies to source"}],"dcterms:description":[{"@value":"Connects the source of oslc_rm:satisfies"}],"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}]},{"@id":"oslc_rm:satisfies-toTarget","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:TargetLink"},"dcterms:title":[{"@value":"oslc_rm:satisfies to target"}],"dcterms:description":[{"@value":"Connects the target of oslc_rm:satisfies"}],"pig:eligibleEndpoint":[{"@id":"IREB:Requirement"}]},{"@id":"IREB:refines","dcterms:title":[{"@value":"refines","@language":"en"},{"@value":"verfeinert","@language":"de"},{"@value":"affine","@language":"fr"}],"dcterms:description":[{"@value":"

A [[IREB:Requirement]] 'refines' another [[IREB:Requirement]].

","@language":"en"}],"pig:specializes":{"@id":"pig:Relationship"},"pig:eligibleProperty":[],"pig:itemType":{"@id":"pig:Relationship"},"pig:eligibleSourceLink":{"@id":"IREB:refines-toSource"},"pig:eligibleTargetLink":{"@id":"IREB:refines-toTarget"}},{"@id":"IREB:refines-toSource","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:SourceLink"},"dcterms:title":[{"@value":"IREB:refines to source"}],"dcterms:description":[{"@value":"Connects the source of IREB:refines"}],"pig:eligibleEndpoint":[{"@id":"IREB:Requirement"}]},{"@id":"IREB:refines-toTarget","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:TargetLink"},"dcterms:title":[{"@value":"IREB:refines to target"}],"dcterms:description":[{"@value":"Connects the target of IREB:refines"}],"pig:eligibleEndpoint":[{"@id":"IREB:Requirement"}]},{"@id":"sysml:Allocate","dcterms:title":[{"@value":"is allocated to","@language":"en"},{"@value":"zugeordnet zu","@language":"de"},{"@value":"allouée à","@language":"fr"}],"dcterms:description":[{"@value":"

An [[FMC:Actor]] is allocated to another [[FMC:Actor]] (e.g. a logical function is allocated to a physical component.

","@language":"en"}],"pig:specializes":{"@id":"pig:Relationship"},"pig:eligibleProperty":[],"pig:itemType":{"@id":"pig:Relationship"},"pig:eligibleSourceLink":{"@id":"sysml:Allocate-toSource"},"pig:eligibleTargetLink":{"@id":"sysml:Allocate-toTarget"}},{"@id":"sysml:Allocate-toSource","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:SourceLink"},"dcterms:title":[{"@value":"sysml:Allocate to source"}],"dcterms:description":[{"@value":"Connects the source of sysml:Allocate"}],"pig:eligibleEndpoint":[{"@id":"SpecIF:ModelElement"}]},{"@id":"sysml:Allocate-toTarget","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:TargetLink"},"dcterms:title":[{"@value":"sysml:Allocate to target"}],"dcterms:description":[{"@value":"Connects the target of sysml:Allocate"}],"pig:eligibleEndpoint":[{"@id":"SpecIF:ModelElement"}]},{"@id":"uml:ownedBehavior","dcterms:title":[{"@value":"has Behavior"}],"pig:specializes":{"@id":"pig:Relationship"},"pig:eligibleProperty":[],"pig:itemType":{"@id":"pig:Relationship"},"pig:eligibleSourceLink":{"@id":"uml:ownedBehavior-toSource"},"pig:eligibleTargetLink":{"@id":"uml:ownedBehavior-toTarget"}},{"@id":"uml:ownedBehavior-toSource","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:SourceLink"},"dcterms:title":[{"@value":"uml:ownedBehavior to source"}],"dcterms:description":[{"@value":"Connects the source of uml:ownedBehavior"}],"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}]},{"@id":"uml:ownedBehavior-toTarget","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:TargetLink"},"dcterms:title":[{"@value":"uml:ownedBehavior to target"}],"dcterms:description":[{"@value":"Connects the target of uml:ownedBehavior"}],"pig:eligibleEndpoint":[{"@id":"o:RC-UmlStatemachine"},{"@id":"o:RC-UmlActivity"},{"@id":"FMC:Actor"},{"@id":"o:RC-UmlUsecase"}]},{"@id":"uml:Trigger","dcterms:title":[{"@value":"triggers"}],"pig:specializes":{"@id":"pig:Relationship"},"pig:eligibleProperty":[],"pig:itemType":{"@id":"pig:Relationship"},"pig:eligibleSourceLink":{"@id":"uml:Trigger-toSource"},"pig:eligibleTargetLink":{"@id":"uml:Trigger-toTarget"}},{"@id":"uml:Trigger-toSource","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:SourceLink"},"dcterms:title":[{"@value":"uml:Trigger to source"}],"dcterms:description":[{"@value":"Connects the source of uml:Trigger"}],"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}]},{"@id":"uml:Trigger-toTarget","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:TargetLink"},"dcterms:title":[{"@value":"uml:Trigger to target"}],"dcterms:description":[{"@value":"Connects the target of uml:Trigger"}],"pig:eligibleEndpoint":[{"@id":"pig:Entity"},{"@id":"pig:Relationship"}]},{"@id":"uml:TransitionSource","dcterms:title":[{"@value":"starts from"}],"pig:specializes":{"@id":"pig:Relationship"},"pig:eligibleProperty":[],"pig:itemType":{"@id":"pig:Relationship"},"pig:eligibleSourceLink":{"@id":"uml:TransitionSource-toSource"},"pig:eligibleTargetLink":{"@id":"uml:TransitionSource-toTarget"}},{"@id":"uml:TransitionSource-toSource","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:SourceLink"},"dcterms:title":[{"@value":"uml:TransitionSource to source"}],"dcterms:description":[{"@value":"Connects the source of uml:TransitionSource"}],"pig:eligibleEndpoint":[{"@id":"o:RC-UmlTransition"},{"@id":"FMC:Actor"}]},{"@id":"uml:TransitionSource-toTarget","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:TargetLink"},"dcterms:title":[{"@value":"uml:TransitionSource to target"}],"dcterms:description":[{"@value":"Connects the target of uml:TransitionSource"}],"pig:eligibleEndpoint":[{"@id":"o:RC-UmlState"},{"@id":"FMC:State"}]},{"@id":"uml:TransitionTarget","dcterms:title":[{"@value":"ends at"}],"pig:specializes":{"@id":"pig:Relationship"},"pig:eligibleProperty":[],"pig:itemType":{"@id":"pig:Relationship"},"pig:eligibleSourceLink":{"@id":"uml:TransitionTarget-toSource"},"pig:eligibleTargetLink":{"@id":"uml:TransitionTarget-toTarget"}},{"@id":"uml:TransitionTarget-toSource","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:SourceLink"},"dcterms:title":[{"@value":"uml:TransitionTarget to source"}],"dcterms:description":[{"@value":"Connects the source of uml:TransitionTarget"}],"pig:eligibleEndpoint":[{"@id":"o:RC-UmlTransition"},{"@id":"FMC:Actor"}]},{"@id":"uml:TransitionTarget-toTarget","pig:itemType":{"@id":"pig:Link"},"pig:specializes":{"@id":"pig:TargetLink"},"dcterms:title":[{"@value":"uml:TransitionTarget to target"}],"dcterms:description":[{"@value":"Connects the target of uml:TransitionTarget"}],"pig:eligibleEndpoint":[{"@id":"o:RC-UmlState"},{"@id":"FMC:State"}]},{"@id":"d:_19_0_3_71e0233_1746001337727_31616_14119","@type":"uml:Package","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"1. Requirements"}],"pig:category":[{"@value":"uml:Package","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552810549321_335902_14037","@type":"pig:View","pig:revision":"rev-9405830621","dcterms:modified":"2025-11-12T09:28:04.871Z","dcterms:title":[{"@value":"Original Requirement Specification"}],"SpecIF:Diagram":[{"@value":"files_and_images/Original Requirement Specification.png","pig:itemType":{"@id":"pig:aProperty"}}],"pig:category":[{"@value":"uml:Diagram","pig:itemType":{"@id":"pig:aProperty"}}],"SpecIF:Notation":[{"@value":"UML Requirement Diagram","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"},"pig:shows":[{"@id":"d:_18_5_3_bc402f4_1552810869277_586147_14175","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552810948738_707540_14217","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552810776263_894029_14121","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813199775_830344_15281","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552810644650_650036_14079","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552812437056_257578_14975","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552812370943_152244_14924","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811136575_459751_14253","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811141795_384989_14263","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813433937_279860_15327","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552810808641_447672_14157","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813334959_22842_15317","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813438857_436917_15337","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552810776263_894029_14121","@type":"IREB:Requirement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Navigation"}],"pig:category":[{"@value":"uml:Class","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"The Vehicle shall autonomously choose the best route from the current location C to the target location T by means of a road map and actual traffic conditions."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552810869277_586147_14175","@type":"IREB:Requirement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Road Driving"}],"pig:category":[{"@value":"uml:Class","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"The vehicle shall be able to follow a selected road."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552810644650_650036_14079","@type":"IREB:Requirement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Transport to Target"}],"pig:category":[{"@value":"uml:Class","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"As a customer I would like to get a parcel delivered from the current location C to a target location T. "}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552812370943_152244_14924","@type":"IREB:Requirement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Location as Postal Address"}],"pig:category":[{"@value":"uml:Class","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"A location may be specified as a postal address."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552813199775_830344_15281","@type":"IREB:Requirement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Obstacle Avoidance"}],"pig:category":[{"@value":"uml:Class","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"The vehicle shall not hit a person or an obstacle on the road."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552810948738_707540_14217","@type":"IREB:Requirement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Safe Driving"}],"pig:category":[{"@value":"uml:Class","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"The vehicle shall drive no faster than allowed or adequate for the actual road condition."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552812437056_257578_14975","@type":"IREB:Requirement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Loacation as GPS Coordinate"}],"pig:category":[{"@value":"uml:Class","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"A location may be specified as GPS Coordinate with Longitude and Latitude in Degrees."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","@type":"uml:Package","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"2. Functional Layer"}],"pig:category":[{"@value":"uml:Package","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552811870216_105923_14824","@type":"pig:View","pig:revision":"rev-11094738149","dcterms:modified":"2025-11-12T09:28:21.131Z","dcterms:title":[{"@value":"Functional Decomposition"}],"SpecIF:Diagram":[{"@value":"files_and_images/Functional Decomposition.png","pig:itemType":{"@id":"pig:aProperty"}}],"pig:category":[{"@value":"uml:Diagram","pig:itemType":{"@id":"pig:aProperty"}}],"SpecIF:Notation":[{"@value":"SysML Block Definition Diagram","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"},"pig:shows":[{"@id":"d:_18_5_3_bc402f4_1552814104357_719492_15607","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552812805784_548404_15062","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552815791106_548984_16360","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552814523707_628151_15988","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1556615164506_303870_14975","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811937697_690731_14862","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552812663506_709974_15011","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813556602_820961_15353","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552810948738_707540_14217","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552810776263_894029_14121","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1556615212765_548060_15021","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552814194319_862392_15683","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552814246502_629251_15775","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_e40094_1718632293724_754873_14112","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552810869277_586147_14175","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552814212889_663150_15729","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813038602_222864_15129","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811510062_903764_14503","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552814266523_206006_15821","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813818846_218375_15548","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_e40094_1718632569345_311906_14190","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604324293194_85516_13666","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_e40094_1718632549973_831908_14172","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604324214402_6480_13631","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604324487193_60359_13731","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604323867629_562362_13452","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813096475_160687_15177","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1556615683513_411874_15073","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1556615721418_831605_15106","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604323821792_371188_13426","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813723040_381289_15401","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813102494_993665_15207","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604324465452_775050_13715","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604324188817_384398_13615","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552815590348_672436_16293","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552815653359_771130_16352","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604323888993_530325_13468","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813795106_879353_15508","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604324636141_429081_13763","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604324764626_856811_13779","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604324512097_628722_13747","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813870706_981259_15588","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604324447693_373448_13698","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604324321433_274293_13682","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552815541056_996851_16231","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552813556602_820961_15353","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Brake in an Emergency"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"Take the vehicle to a full stop in the shortest time possible without loosing control over the trajectory."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552814212889_663150_15729","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Set Speed"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"The (autonomous) driver's speed command (gas pedal position)."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1556615164506_303870_14975","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Turn Right"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"Take a right turn at a road intersection. Observe the traffic entering the same lane and avoid a collision, if another vehicle does not observe the priority rules."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552814194319_862392_15683","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Set Radius"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"The (autonomous) driver's steering command (steering wheel position)."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552812663506_709974_15011","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Navigate"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"Select a path to get from the current position to the target."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552814523707_628151_15988","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Calculate Accelerations"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1556615212765_548060_15021","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Turn Left"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"Take a left turn in a road intersection. Observe the priority rules and avoid traffic on the two lanes you are crossing."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552811937697_690731_14862","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Drive to Target"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"Manoevre the vehicle from the current position to the selected target."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552814246502_629251_15775","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Set Acceleration Left"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552813038602_222864_15129","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Select an adequate Speed"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"Taking into account road condition and weather, select a safe speed."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552815791106_548984_16360","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Set Acceleration Right"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552812805784_548404_15062","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Follow the Road"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"Keep the vehicle on the selected road."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552814266523_206006_15821","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Apply Brake"}],"pig:category":[{"@value":"RFLP:Function","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","@type":"uml:Package","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"3. Logical Layer"}],"pig:category":[{"@value":"uml:Package","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027287147_82140_14431","@type":"pig:View","pig:revision":"rev-7887707545","dcterms:modified":"2025-11-12T09:28:38.225Z","dcterms:title":[{"@value":"Logical Decomposition"}],"SpecIF:Diagram":[{"@value":"files_and_images/Logical Decomposition.png","pig:itemType":{"@id":"pig:aProperty"}}],"pig:category":[{"@value":"uml:Diagram","pig:itemType":{"@id":"pig:aProperty"}}],"SpecIF:Notation":[{"@value":"SysML Block Definition Diagram","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"},"pig:shows":[{"@id":"d:_18_5_3_bc402f4_1552814104357_719492_15607","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811538626_715866_14549","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_e40094_1718632293724_754873_14112","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604360793737_196507_13523","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811469014_293642_14411","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811454014_108965_14365","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552827771600_60767_16481","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811554859_819240_14595","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811510062_903764_14503","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811672063_243990_14798","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_e40094_1718634030433_51877_14234","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604360962045_534106_13570","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552814131280_1190_15654","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811613008_58411_14648","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811666192_832840_14768","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552827804167_216283_16528","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811619502_982677_14678","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811653332_976698_14708","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_e40094_1718632293724_754873_14112","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Drive Right"}],"pig:category":[{"@value":"RFLP:Logical_System","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"The wheel with motor and brake on the right side. The motor can accelerate and decelerate. The motor controller is \"4-quadrant\" and can supply electrical current for recharging the batteries."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552827771600_60767_16481","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Track Sensor"}],"pig:category":[{"@value":"RFLP:Logical_System","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552811469014_293642_14411","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Body"}],"pig:category":[{"@value":"RFLP:Logical_System","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552811510062_903764_14503","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Drive Left"}],"pig:category":[{"@value":"RFLP:Logical_System","pig:itemType":{"@id":"pig:aProperty"}}],"dcterms:description":[{"@value":"The wheel with motor and brake on the left side. The motor can accelerate and decelerate. The motor controller is \"4-quadrant\" and can supply electrical current for recharging the batteries."}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"LEGO Mindstorms Vehicle"}],"pig:category":[{"@value":"RFLP:Logical_System","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552811538626_715866_14549","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Support Front"}],"pig:category":[{"@value":"RFLP:Logical_System","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552814104357_719492_15607","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Controller"}],"pig:category":[{"@value":"RFLP:Logical_System","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027630926_778269_14800","@type":"pig:View","pig:revision":"rev-11807243868","dcterms:modified":"2025-11-12T09:29:01.139Z","dcterms:title":[{"@value":"Controller State Machine"}],"SpecIF:Diagram":[{"@value":"files_and_images/Controller State Machine.png","pig:itemType":{"@id":"pig:aProperty"}}],"pig:category":[{"@value":"uml:Diagram","pig:itemType":{"@id":"pig:aProperty"}}],"SpecIF:Notation":[{"@value":"SysML State Machine Diagram","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"},"pig:shows":[{"@id":"d:_19_0_3_71e0233_1746027747207_605800_14880","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028306923_558192_15006","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027631039_116153_14834","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027847324_539644_14916","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028149871_266697_14985","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028183413_413266_14988","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028605370_466818_15028","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027920180_215768_14934","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027631053_836894_14835","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028442990_717820_15013","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028275862_880382_14999","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027631056_691503_14836","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027731735_863978_14871","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027704287_746273_14855","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746029049431_401220_15072","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027837044_867827_14913","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028839192_503107_15053","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028827712_739888_15050","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028061993_960870_14971","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028073773_979720_14974","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027804266_719052_14896","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028508430_363448_15020","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028822501_191804_15047","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027731735_371186_14872","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027967661_707482_14950","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027630942_863638_14801","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027630942_464786_14802","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746029024681_691401_15066","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028118776_36360_14979","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746029726958_589946_15078","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028195311_519257_14989","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028216231_986687_14993","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028282302_943711_15000","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028313498_548385_15007","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028899054_101006_15058","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028954791_356054_15062","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028884803_562591_15054","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746029056197_950529_15073","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028540160_854095_15021","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028483612_410592_15014","pig:itemType":{"@id":"pig:aTargetLink"}}],"pig:depicts":[{"@id":"d:_19_0_3_71e0233_1746027630942_863638_14801","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_71e0233_1746027631039_116153_14834","@type":"FMC:State","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"entry"}],"pig:category":[{"@value":"uml:Pseudostate","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027631053_836894_14835","@type":"FMC:State","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Off"}],"pig:category":[{"@value":"uml:State","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027731735_863978_14871","@type":"FMC:State","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"entry"}],"pig:category":[{"@value":"uml:Pseudostate","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027747207_605800_14880","@type":"FMC:State","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Navigating"}],"pig:category":[{"@value":"uml:State","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027804266_719052_14896","@type":"FMC:State","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Defining Target"}],"pig:category":[{"@value":"uml:State","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","@type":"FMC:State","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Following the Road"}],"pig:category":[{"@value":"uml:State","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027920180_215768_14934","@type":"FMC:State","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Turning Right"}],"pig:category":[{"@value":"uml:State","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027967661_707482_14950","@type":"FMC:State","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Turning Left"}],"pig:category":[{"@value":"uml:State","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028605370_466818_15028","@type":"FMC:State","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Standing"}],"pig:category":[{"@value":"uml:State","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027837044_867827_14913","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"entry→Defining Target"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027847324_539644_14916","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Defining Target→Navigating"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028061993_960870_14971","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Navigating→Following the Road"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028073773_979720_14974","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Following the Road→Navigating"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028149871_266697_14985","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Following the Road→Turning Right"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028183413_413266_14988","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Turning Right→Following the Road"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028275862_880382_14999","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Following the Road→Turning Left"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028306923_558192_15006","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Turning Left→Following the Road"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028822501_191804_15047","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Following the Road→Standing"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028827712_739888_15050","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Following the Road→Standing"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028839192_503107_15053","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Standing→Following the Road"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746029049431_401220_15072","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Standing→Defining Target"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028508430_363448_15020","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Standing→Off"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027704287_746273_14855","@type":"FMC:State","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"On"}],"pig:category":[{"@value":"uml:State","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027631056_691503_14836","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"entry→Off"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028442990_717820_15013","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Off→On"}],"pig:category":[{"@value":"uml:Transition","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552811554859_819240_14595","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Support Rear"}],"pig:category":[{"@value":"RFLP:Logical_System","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_18_5_3_bc402f4_1552811454014_108965_14365","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Chassis"}],"pig:category":[{"@value":"RFLP:Logical_System","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_bc402f4_1604360793737_196507_13523","@type":"SpecIF:ModelElement","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Collision Alarm \nSensor"}],"pig:category":[{"@value":"RFLP:Logical_System","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028118776_36360_14979","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"start_driving!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028195311_519257_14989","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"turn_right!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028216231_986687_14993","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"turned_right!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028282302_943711_15000","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"turn_left!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028313498_548385_15007","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"turned_left!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028483612_410592_15014","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"switch_on!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028540160_854095_15021","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"switch_off!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028884803_562591_15054","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"continue_driving!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028899054_101006_15058","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"halt!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746028954791_356054_15062","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"emergency_brake!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746029024681_691401_15066","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"navigate!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746029056197_950529_15073","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"new_target!"}],"pig:category":[{"@value":"uml:SignalEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746029726958_589946_15078","@type":"FMC:Event","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"re-navigate!"}],"pig:category":[{"@value":"uml:CallEvent","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027630942_863638_14801","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"Controller State Machine"}],"pig:category":[{"@value":"uml:StateMachine","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027630942_464786_14802","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"unnamed uml:Region"}],"pig:category":[{"@value":"uml:Region","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:_19_0_3_71e0233_1746027731735_371186_14872","@type":"FMC:Actor","dcterms:modified":"2025-09-24T08:28:08.223Z","dcterms:title":[{"@value":"unnamed uml:Region"}],"pig:category":[{"@value":"uml:Region","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"}},{"@id":"d:S-contains-10399921810","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001337727_31616_14119","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810549321_335902_14037","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10330010667","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001337727_31616_14119","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810776263_894029_14121","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10652725449","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001337727_31616_14119","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810869277_586147_14175","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-11927092777","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001337727_31616_14119","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810644650_650036_14079","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8881937697","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001337727_31616_14119","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552812370943_152244_14924","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10783514673","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001337727_31616_14119","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552813199775_830344_15281","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10945506396","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001337727_31616_14119","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810948738_707540_14217","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-11407335150","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001337727_31616_14119","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552812437056_257578_14975","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-9116397029","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811870216_105923_14824","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10022314071","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552813556602_820961_15353","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-9131303994","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814212889_663150_15729","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8559115413","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1556615164506_303870_14975","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10881577187","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814194319_862392_15683","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-9119481481","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552812663506_709974_15011","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-12098040971","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814523707_628151_15988","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10442923979","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1556615212765_548060_15021","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-11694297906","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811937697_690731_14862","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-9652197932","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814246502_629251_15775","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-9362975811","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552813038602_222864_15129","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10771124872","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552815791106_548984_16360","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-9168262784","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552812805784_548404_15062","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8878119738","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814266523_206006_15821","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604324487193_60359_13731","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552812805784_548404_15062","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814194319_862392_15683","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604323888993_530325_13468","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552813556602_820961_15353","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814523707_628151_15988","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604324214402_6480_13631","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552814523707_628151_15988","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552815791106_548984_16360","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604324447693_373448_13698","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1556615212765_548060_15021","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814194319_862392_15683","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1556615721418_831605_15106","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811937697_690731_14862","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1556615212765_548060_15021","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1556615683513_411874_15073","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811937697_690731_14862","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1556615164506_303870_14975","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552813723040_381289_15401","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811937697_690731_14862","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552813556602_820961_15353","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604324465452_775050_13715","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1556615164506_303870_14975","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814194319_862392_15683","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604324512097_628722_13747","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1556615164506_303870_14975","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552813038602_222864_15129","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604323867629_562362_13452","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552814212889_663150_15729","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814523707_628151_15988","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604324293194_85516_13666","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552814523707_628151_15988","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814266523_206006_15821","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604324321433_274293_13682","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1556615212765_548060_15021","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552813038602_222864_15129","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604324636141_429081_13763","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552812805784_548404_15062","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552813038602_222864_15129","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552813096475_160687_15177","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811937697_690731_14862","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552812663506_709974_15011","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604324764626_856811_13779","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552813038602_222864_15129","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814212889_663150_15729","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604323821792_371188_13426","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552814194319_862392_15683","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814523707_628151_15988","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552813102494_993665_15207","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811937697_690731_14862","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552812805784_548404_15062","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604324188817_384398_13615","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552814523707_628151_15988","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814246502_629251_15775","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10564266575","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027287147_82140_14431","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-11515557626","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_e40094_1718632293724_754873_14112","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-9482395742","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552827771600_60767_16481","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-9179309009","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811469014_293642_14411","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8743767210","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811510062_903764_14503","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8520696102","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8274829800","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811538626_715866_14549","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8790231064","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814104357_719492_15607","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-ownedBehavior-10906203416","@type":"uml:ownedBehavior","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:ownedBehavior-toSource":[{"@id":"d:_18_5_3_bc402f4_1552814104357_719492_15607","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:ownedBehavior-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027630942_863638_14801","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8869082288","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027630942_863638_14801","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-9973927808","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027630926_778269_14800","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-11028317306","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027630942_863638_14801","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027630942_464786_14802","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10256822099","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027630942_464786_14802","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027631039_116153_14834","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8821517563","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027630942_464786_14802","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027631053_836894_14835","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8168210938","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027630942_464786_14802","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027704287_746273_14855","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-11015906742","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027704287_746273_14855","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027731735_371186_14872","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10159638974","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027731735_371186_14872","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027731735_863978_14871","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-11234558713","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027731735_371186_14872","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027747207_605800_14880","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8004350392","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027731735_371186_14872","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027804266_719052_14896","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10687126464","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027731735_371186_14872","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-9457711542","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027731735_371186_14872","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027920180_215768_14934","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10206589560","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027731735_371186_14872","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027967661_707482_14950","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-11254687961","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746027731735_371186_14872","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028605370_466818_15028","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-10764992335","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746027837044_867827_14913","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027731735_863978_14871","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-10266389823","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746027837044_867827_14913","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027804266_719052_14896","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-9736561245","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746027847324_539644_14916","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027804266_719052_14896","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-11306959252","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746027847324_539644_14916","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027747207_605800_14880","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-11057421225","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746029024681_691401_15066","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027847324_539644_14916","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-10753048967","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746028061993_960870_14971","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027747207_605800_14880","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-10164860996","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746028061993_960870_14971","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-9989729747","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746028118776_36360_14979","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028061993_960870_14971","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-8258457006","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746028073773_979720_14974","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-8326005469","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746028073773_979720_14974","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027747207_605800_14880","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-11586041943","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746029726958_589946_15078","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028073773_979720_14974","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-10663437825","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746028149871_266697_14985","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-10827655661","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746028149871_266697_14985","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027920180_215768_14934","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-11897440242","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746028195311_519257_14989","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028149871_266697_14985","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-10501816934","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746028183413_413266_14988","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027920180_215768_14934","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-9816959590","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746028183413_413266_14988","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-8400858676","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746028216231_986687_14993","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028183413_413266_14988","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-9888010871","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746028275862_880382_14999","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-7971585829","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746028275862_880382_14999","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027967661_707482_14950","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-8791358862","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746028282302_943711_15000","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028275862_880382_14999","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-8873253251","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746028306923_558192_15006","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027967661_707482_14950","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-10269038785","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746028306923_558192_15006","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-8710683288","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746028313498_548385_15007","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028306923_558192_15006","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-8996430444","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746028822501_191804_15047","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-11699322235","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746028822501_191804_15047","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028605370_466818_15028","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-9704245737","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746028899054_101006_15058","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028822501_191804_15047","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-8860759247","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746028827712_739888_15050","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-11563651038","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746028827712_739888_15050","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028605370_466818_15028","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-8483779004","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746028954791_356054_15062","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028827712_739888_15050","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-11316265439","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746028839192_503107_15053","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028605370_466818_15028","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-8092734140","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746028839192_503107_15053","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-9344676895","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746028884803_562591_15054","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028839192_503107_15053","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-10914308453","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746029049431_401220_15072","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028605370_466818_15028","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-10482894906","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746029049431_401220_15072","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027804266_719052_14896","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-10198907956","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746029056197_950529_15073","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746029049431_401220_15072","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-10203202111","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746028508430_363448_15020","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028605370_466818_15028","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-10388500447","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746028508430_363448_15020","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027631053_836894_14835","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-8226880185","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746028540160_854095_15021","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028508430_363448_15020","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-10505811433","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746027631056_691503_14836","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027631039_116153_14834","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-11750312327","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746027631056_691503_14836","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027631053_836894_14835","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-startsFrom-9662251988","@type":"uml:TransitionSource","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionSource-toSource":[{"@id":"d:_19_0_3_71e0233_1746028442990_717820_15013","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionSource-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027631053_836894_14835","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-endsAt-10042078921","@type":"uml:TransitionTarget","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:TransitionTarget-toSource":[{"@id":"d:_19_0_3_71e0233_1746028442990_717820_15013","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:TransitionTarget-toTarget":[{"@id":"d:_19_0_3_71e0233_1746027704287_746273_14855","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-triggers-11689502440","@type":"uml:Trigger","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"uml:Trigger-toSource":[{"@id":"d:_19_0_3_71e0233_1746028483612_410592_15014","pig:itemType":{"@id":"pig:aSourceLink"}}],"uml:Trigger-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028442990_717820_15013","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8524437672","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811554859_819240_14595","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10606577794","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811454014_108965_14365","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10600261667","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_bc402f4_1604360793737_196507_13523","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8034687851","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028118776_36360_14979","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8284367231","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028195311_519257_14989","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-11116214028","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028216231_986687_14993","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-11694709529","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028282302_943711_15000","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-12033035043","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028313498_548385_15007","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-9345097305","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028483612_410592_15014","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10887885853","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028540160_854095_15021","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-11330005271","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028884803_562591_15054","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10697539955","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028899054_101006_15058","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8277838339","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746028954791_356054_15062","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10218959244","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746029024681_691401_15066","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-10331126120","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746029056197_950529_15073","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:S-contains-8478289863","@type":"SpecIF:contains","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"SpecIF:contains-toSource":[{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"SpecIF:contains-toTarget":[{"@id":"d:_19_0_3_71e0233_1746029726958_589946_15078","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552814131280_1190_15654","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814104357_719492_15607","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_bc402f4_1604360962045_534106_13570","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_19_0_3_bc402f4_1604360793737_196507_13523","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552811613008_58411_14648","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811454014_108965_14365","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_e40094_1718634030433_51877_14234","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_19_0_3_e40094_1718632293724_754873_14112","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552811619502_982677_14678","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811469014_293642_14411","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552827804167_216283_16528","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552827771600_60767_16481","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552811666192_832840_14768","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811538626_715866_14549","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552811672063_243990_14798","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811554859_819240_14595","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552811653332_976698_14708","@type":"dcterms:hasPart","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"dcterms:hasPart-toSource":[{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aSourceLink"}}],"dcterms:hasPart-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811510062_903764_14503","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552810808641_447672_14157","@type":"IREB:refines","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"IREB:refines-toSource":[{"@id":"d:_18_5_3_bc402f4_1552810776263_894029_14121","pig:itemType":{"@id":"pig:aSourceLink"}}],"IREB:refines-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810644650_650036_14079","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552811141795_384989_14263","@type":"IREB:refines","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"IREB:refines-toSource":[{"@id":"d:_18_5_3_bc402f4_1552810948738_707540_14217","pig:itemType":{"@id":"pig:aSourceLink"}}],"IREB:refines-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810644650_650036_14079","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552813438857_436917_15337","@type":"IREB:refines","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"IREB:refines-toSource":[{"@id":"d:_18_5_3_bc402f4_1552812370943_152244_14924","pig:itemType":{"@id":"pig:aSourceLink"}}],"IREB:refines-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810644650_650036_14079","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552813334959_22842_15317","@type":"IREB:refines","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"IREB:refines-toSource":[{"@id":"d:_18_5_3_bc402f4_1552813199775_830344_15281","pig:itemType":{"@id":"pig:aSourceLink"}}],"IREB:refines-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810644650_650036_14079","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552813433937_279860_15327","@type":"IREB:refines","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"IREB:refines-toSource":[{"@id":"d:_18_5_3_bc402f4_1552812437056_257578_14975","pig:itemType":{"@id":"pig:aSourceLink"}}],"IREB:refines-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810644650_650036_14079","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552811136575_459751_14253","@type":"IREB:refines","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"IREB:refines-toSource":[{"@id":"d:_18_5_3_bc402f4_1552810869277_586147_14175","pig:itemType":{"@id":"pig:aSourceLink"}}],"IREB:refines-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810644650_650036_14079","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552813795106_879353_15508","@type":"oslc_rm:satisfies","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"oslc_rm:satisfies-toSource":[{"@id":"d:_18_5_3_bc402f4_1552812805784_548404_15062","pig:itemType":{"@id":"pig:aSourceLink"}}],"oslc_rm:satisfies-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810869277_586147_14175","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552813870706_981259_15588","@type":"oslc_rm:satisfies","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"oslc_rm:satisfies-toSource":[{"@id":"d:_18_5_3_bc402f4_1552812663506_709974_15011","pig:itemType":{"@id":"pig:aSourceLink"}}],"oslc_rm:satisfies-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810776263_894029_14121","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552815653359_771130_16352","@type":"sysml:Allocate","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"sysml:Allocate-toSource":[{"@id":"d:_18_5_3_bc402f4_1552814523707_628151_15988","pig:itemType":{"@id":"pig:aSourceLink"}}],"sysml:Allocate-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552814104357_719492_15607","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552815590348_672436_16293","@type":"sysml:Allocate","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"sysml:Allocate-toSource":[{"@id":"d:_18_5_3_bc402f4_1552814266523_206006_15821","pig:itemType":{"@id":"pig:aSourceLink"}}],"sysml:Allocate-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811510062_903764_14503","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_e40094_1718632549973_831908_14172","@type":"sysml:Allocate","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"sysml:Allocate-toSource":[{"@id":"d:_18_5_3_bc402f4_1552815791106_548984_16360","pig:itemType":{"@id":"pig:aSourceLink"}}],"sysml:Allocate-toTarget":[{"@id":"d:_19_0_3_e40094_1718632293724_754873_14112","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552815541056_996851_16231","@type":"sysml:Allocate","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"sysml:Allocate-toSource":[{"@id":"d:_18_5_3_bc402f4_1552814246502_629251_15775","pig:itemType":{"@id":"pig:aSourceLink"}}],"sysml:Allocate-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552811510062_903764_14503","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_18_5_3_bc402f4_1552813818846_218375_15548","@type":"oslc_rm:satisfies","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"oslc_rm:satisfies-toSource":[{"@id":"d:_18_5_3_bc402f4_1552813038602_222864_15129","pig:itemType":{"@id":"pig:aSourceLink"}}],"oslc_rm:satisfies-toTarget":[{"@id":"d:_18_5_3_bc402f4_1552810948738_707540_14217","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:_19_0_3_e40094_1718632569345_311906_14190","@type":"sysml:Allocate","dcterms:modified":"2025-09-24T08:28:08.223Z","pig:itemType":{"@id":"pig:aRelationship"},"sysml:Allocate-toSource":[{"@id":"d:_18_5_3_bc402f4_1552814266523_206006_15821","pig:itemType":{"@id":"pig:aSourceLink"}}],"sysml:Allocate-toTarget":[{"@id":"d:_19_0_3_e40094_1718632293724_754873_14112","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:HierarchyRoot-P-eee_1045467100313_135436_1","@type":"pig:HierarchyRoot","pig:itemType":{"@id":"pig:anEntity"},"dcterms:modified":"2026-01-17T22:38:55.908Z","dcterms:title":[{"@value":"Hierarchy Root"}],"dcterms:description":[{"@value":"... anchoring all hierarchies of this graph (package)"}],"pig:lists":[{"@id":"d:HR-9052885961","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:HR-FolderGlossary-10391243923","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:eee_1045467100313_135436_1","@type":"pig:Outline","pig:revision":"rev-10410861023","dcterms:modified":"2025-11-12T09:27:42.126Z","dcterms:title":[{"@value":"Small Autonomous Vehicle"}],"pig:category":[{"@value":"uml:Model","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"},"pig:lists":[{"@id":"d:_19_0_3_71e0233_1746001337727_31616_14119","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746001480225_327746_14120","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746001561119_779379_14121","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:HR-9052885961","@type":"pig:Outline","dcterms:modified":"2026-01-17T22:38:55.793Z","dcterms:title":[{"@value":"Small Autonomous Vehicle"}],"dcterms:description":[{"@value":"A set of SpecIF Classes derived from a SpecIF Ontology for the domains SpecIF:DomainBase, SpecIF:DomainSystemsEngineering, SpecIF:DomainSystemModelIntegration.","@language":"en"}],"pig:category":[{"@value":"ReqIF:HierarchyRoot","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"},"pig:lists":[{"@id":"d:eee_1045467100313_135436_1","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:FolderGlossary-10391243923","@type":"pig:Outline","dcterms:modified":"2026-01-17T22:38:43.273Z","dcterms:title":[{"@value":"Model Elements (Glossary)"}],"pig:category":[{"@value":"SpecIF:Glossary","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"},"pig:lists":[{"@id":"d:_18_5_3_bc402f4_1552814266523_206006_15821","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811469014_293642_14411","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813556602_820961_15353","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552814523707_628151_15988","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811454014_108965_14365","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_bc402f4_1604360793737_196507_13523","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028884803_562591_15054","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552814104357_719492_15607","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027630942_863638_14801","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027804266_719052_14896","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027847324_539644_14916","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811510062_903764_14503","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_e40094_1718632293724_754873_14112","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811937697_690731_14862","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028954791_356054_15062","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027631039_116153_14834","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027731735_863978_14871","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027837044_867827_14913","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027631056_691503_14836","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552812805784_548404_15062","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027882482_912182_14918","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028073773_979720_14974","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028822501_191804_15047","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028827712_739888_15050","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028275862_880382_14999","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028149871_266697_14985","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028899054_101006_15058","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811412605_640145_14319","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552812437056_257578_14975","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552812370943_152244_14924","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552812663506_709974_15011","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746029024681_691401_15066","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027747207_605800_14880","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028061993_960870_14971","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552810776263_894029_14121","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746029056197_950529_15073","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813199775_830344_15281","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027631053_836894_14835","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028442990_717820_15013","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027704287_746273_14855","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746029726958_589946_15078","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552810869277_586147_14175","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552810948738_707540_14217","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552813038602_222864_15129","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552814246502_629251_15775","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552815791106_548984_16360","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552814194319_862392_15683","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552814212889_663150_15729","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028605370_466818_15028","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746029049431_401220_15072","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028839192_503107_15053","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028508430_363448_15020","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028118776_36360_14979","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811538626_715866_14549","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552811554859_819240_14595","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028540160_854095_15021","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028483612_410592_15014","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552827771600_60767_16481","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1552810644650_650036_14079","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1556615212765_548060_15021","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_18_5_3_bc402f4_1556615164506_303870_14975","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028282302_943711_15000","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028195311_519257_14989","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028313498_548385_15007","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028216231_986687_14993","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027967661_707482_14950","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028306923_558192_15006","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027920180_215768_14934","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746028183413_413266_14988","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027630942_464786_14802","pig:itemType":{"@id":"pig:aTargetLink"}},{"@id":"d:_19_0_3_71e0233_1746027731735_371186_14872","pig:itemType":{"@id":"pig:aTargetLink"}}]},{"@id":"d:HR-FolderGlossary-10391243923","@type":"pig:Outline","dcterms:modified":"2026-01-17T22:38:55.793Z","dcterms:title":[{"@value":"Small Autonomous Vehicle"}],"dcterms:description":[{"@value":"A set of SpecIF Classes derived from a SpecIF Ontology for the domains SpecIF:DomainBase, SpecIF:DomainSystemsEngineering, SpecIF:DomainSystemModelIntegration.","@language":"en"}],"pig:category":[{"@value":"ReqIF:HierarchyRoot","pig:itemType":{"@id":"pig:aProperty"}}],"pig:itemType":{"@id":"pig:anEntity"},"pig:lists":[{"@id":"d:FolderGlossary-10391243923","pig:itemType":{"@id":"pig:aTargetLink"}}]}]} \ No newline at end of file +{ + "@context": { + "o": "https://product-information-graph.org/v0.2/ontology#", + "d": "https://product-information-graph.org/examples/Small%20Autonomous%20Vehicle.specif.zip#", + "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", + "owl": "http://www.w3.org/2002/07/owl#", + "sh": "http://www.w3.org/ns/shacl#", + "xs": "http://www.w3.org/2001/XMLSchema#", + "dcterms": "http://purl.org/dc/terms/", + "FMC": "http://fmc-modeling.org#", + "RFLP": "https://product-information-graph.org/v0.2/ontology/RFLP#", + "IREB": "https://cpre.ireb.org/en/downloads-and-resources/glossary#", + "ReqIF": "https://www.prostep.org/fileadmin/downloads/PSI_ImplementationGuide_ReqIF_V1-7.pdf#", + "oslc_rm": "http://open-services.net/ns/rm#", + "uml": "https://www.omg.org/spec/UML#", + "sysml": "https://www.omg.org/spec/SysML#", + "pig": "https://product-information-graph.org/v0.2/metamodel#", + "SpecIF": "https://specif.de/v1.2/schema#" + }, + "@id": "d:P-eee_1045467100313_135436_1", + "@type": "pig:Package", + "dcterms:title": [ + { + "@value": "Small Autonomous Vehicle" + } + ], + "dcterms:description": [ + { + "@value": "A set of SpecIF Classes derived from a SpecIF Ontology for the domains SpecIF:DomainBase, SpecIF:DomainSystemsEngineering, SpecIF:DomainSystemModelIntegration.", + "@language": "en" + } + ], + "dcterms:modified": "2026-01-17T22:38:55.612Z", + "@graph": [ + { + "@id": "pig:Entity", + "@type": "owl:Class", + "pig:itemType": { + "@id": "pig:Entity" + }, + "dcterms:title": [ + { + "@value": "Entity" + } + ], + "dcterms:description": [ + { + "@value": "A PIG meta-model element used for entities (aka resources or artifacts)." + } + ], + "pig:eligibleProperty": [ + { + "@id": "pig:category" + }, + { + "@id": "pig:icon" + } + ] + }, + { + "@id": "pig:Organizer", + "pig:specializes": { + "@id": "pig:Entity" + }, + "pig:itemType": { + "@id": "pig:Entity" + }, + "dcterms:title": [ + { + "@value": "Organizer" + } + ], + "dcterms:description": [ + { + "@value": "An element organizing model elements. An example is a list of requirements or a diagram using a certain notation." + } + ], + "pig:eligibleProperty": [ + { + "@id": "pig:category" + } + ] + }, + { + "@id": "pig:HierarchyRoot", + "pig:specializes": { + "@id": "pig:Organizer" + }, + "pig:itemType": { + "@id": "pig:Entity" + }, + "dcterms:title": [ + { + "@value": "Hierarchy Root" + } + ], + "dcterms:description": [ + { + "@value": "A subclass of PIG organizer serving as a root for hierarchically organized graph elements." + } + ], + "pig:eligibleProperty": [ + ], + "pig:eligibleTargetLink": [ + { + "@id": "pig:lists" + } + ] + }, + { + "@id": "pig:Outline", + "pig:specializes": { + "@id": "pig:Organizer" + }, + "pig:itemType": { + "@id": "pig:Entity" + }, + "dcterms:title": [ + { + "@value": "Outline" + } + ], + "dcterms:description": [ + { + "@value": "A subclass of PIG organizer comprising all information items of a human-readable document. As usual, the outline is hierarchically organized." + } + ], + "pig:eligibleProperty": [ + { + "@id": "pig:category" + } + ], + "pig:eligibleTargetLink": [ + { + "@id": "pig:lists" + } + ] + }, + { + "@id": "pig:View", + "pig:specializes": { + "@id": "pig:Organizer" + }, + "pig:itemType": { + "@id": "pig:Entity" + }, + "dcterms:title": [ + { + "@value": "View" + } + ], + "dcterms:description": [ + { + "@value": "A subclass of PIG organizer representing a model view (diagram) using a certain notation showing selected model elements." + } + ], + "pig:eligibleProperty": [ + { + "@id": "pig:category" + }, + { + "@id": "pig:icon" + } + ], + "pig:eligibleTargetLink": [ + { + "@id": "pig:shows" + }, + { + "@id": "pig:depicts" + } + ] + }, + { + "@id": "pig:Relationship", + "@type": "owl:Class", + "pig:itemType": { + "@id": "pig:Relationship" + }, + "dcterms:title": [ + { + "@value": "Relationship" + } + ], + "dcterms:description": [ + { + "@value": "A PIG meta-model element used for reified relationships (aka predicates)." + } + ], + "pig:eligibleProperty": [ + { + "@id": "pig:category" + }, + { + "@id": "pig:icon" + } + ], + "pig:eligibleSourceLink": { + "@id": "pig:SourceLink" + }, + "pig:eligibleTargetLink": { + "@id": "pig:TargetLink" + } + }, + { + "@id": "pig:Property", + "@type": "owl:DatatypeProperty", + "pig:itemType": { + "@id": "pig:Property" + }, + "dcterms:title": [ + { + "@value": "Property" + } + ], + "dcterms:description": [ + { + "@value": "A PIG meta-model element used for properties (aka attributes)." + } + ], + "sh:datatype": { + "@id": "xs:anyType" + } + }, + { + "@id": "pig:icon", + "pig:specializes": { + "@id": "pig:Property" + }, + "pig:itemType": { + "@id": "pig:Property" + }, + "dcterms:title": [ + { + "@value": "has icon" + } + ], + "dcterms:description": [ + { + "@value": "Specifies an icon for a model element (entity or relationship)." + } + ], + "sh:datatype": { + "@id": "xs:string" + }, + "sh:minCount": 0, + "sh:maxCount": 1 + }, + { + "@id": "pig:category", + "pig:specializes": { + "@id": "pig:Property" + }, + "pig:itemType": { + "@id": "pig:Property" + }, + "dcterms:title": [ + { + "@value": "has category" + } + ], + "dcterms:description": [ + { + "@value": "Specifies a category for an element (entity, relationship or organizer)." + } + ], + "sh:datatype": { + "@id": "xs:string" + }, + "sh:maxLength": 32, + "sh:minCount": 0, + "sh:maxCount": 1 + }, + { + "@id": "pig:Link", + "@type": "owl:ObjectProperty", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ], + "dcterms:title": [ + { + "@value": "linked with" + } + ], + "dcterms:description": [ + { + "@value": "Connects a reified relationship with its source or target. Also connects an organizer to a model element" + } + ] + }, + { + "@id": "pig:SourceLink", + "pig:specializes": { + "@id": "pig:Link" + }, + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ], + "dcterms:title": [ + { + "@value": "to source" + } + ], + "dcterms:description": [ + { + "@value": "Connects the source of a reified relationship." + } + ] + }, + { + "@id": "pig:TargetLink", + "pig:specializes": { + "@id": "pig:Link" + }, + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ], + "dcterms:title": [ + { + "@value": "to target" + } + ], + "dcterms:description": [ + { + "@value": "Connects the target of a reified relationship or an organizer." + } + ] + }, + { + "@id": "pig:lists", + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + }, + { + "@id": "pig:Organizer" + } + ], + "dcterms:title": [ + { + "@value": "lists" + } + ], + "dcterms:description": [ + { + "@value": "Lists an entity, a relationship or a subordinated organizer." + } + ] + }, + { + "@id": "pig:shows", + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ], + "dcterms:title": [ + { + "@value": "shows" + } + ], + "dcterms:description": [ + { + "@value": "Shows an entity or a relationship." + } + ] + }, + { + "@id": "pig:depicts", + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + } + ], + "dcterms:title": [ + { + "@value": "depicts" + } + ], + "dcterms:description": [ + { + "@value": "Depicts an entity; inverse of uml:ownedDiagram." + } + ] + }, + { + "@id": "dcterms:title", + "dcterms:title": [ + { + "@value": "Title", + "@language": "en" + }, + { + "@value": "Titel", + "@language": "de" + }, + { + "@value": "Titre", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "

A name given to the resource. (source: DCMI)

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. (source: OSLC)

", + "@language": "en" + } + ], + "@type": "owl:DatatypeProperty", + "pig:itemType": { + "@id": "pig:Property" + }, + "sh:datatype": { + "@id": "xs:string" + }, + "sh:maxCount": 1, + "sh:maxLength": 256 + }, + { + "@id": "dcterms:description", + "dcterms:title": [ + { + "@value": "Description", + "@language": "en" + }, + { + "@value": "Beschreibung", + "@language": "de" + }, + { + "@value": "Description", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "

An account of the resource. (source: DCMI)

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. (source: OSLC)

", + "@language": "en" + } + ], + "@type": "owl:DatatypeProperty", + "pig:itemType": { + "@id": "pig:Property" + }, + "sh:datatype": { + "@id": "xs:string" + }, + "sh:maxCount": 1 + }, + { + "@id": "SpecIF:Diagram", + "dcterms:title": [ + { + "@value": "Diagram", + "@language": "en" + }, + { + "@value": "Diagramm", + "@language": "de" + }, + { + "@value": "Diagramme", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "A diagram illustrating the resource or a link to a diagram.", + "@language": "en" + } + ], + "@type": "owl:DatatypeProperty", + "pig:itemType": { + "@id": "pig:Property" + }, + "sh:datatype": { + "@id": "xs:string" + } + }, + { + "@id": "SpecIF:Notation", + "dcterms:title": [ + { + "@value": "Notation", + "@language": "en" + } + ], + "dcterms:description": [ + { + "@value": "The notation used by a model diagram, e.g. 'BPMN 2.0', 'SysML Activity Diagram' or 'FMC Block Diagram'.", + "@language": "en" + } + ], + "@type": "owl:DatatypeProperty", + "pig:itemType": { + "@id": "pig:Property" + }, + "sh:datatype": { + "@id": "xs:string" + }, + "sh:maxCount": 1, + "sh:maxLength": 32 + }, + { + "@id": "SpecIF:Paragraph", + "dcterms:title": [ + { + "@value": "Paragraph", + "@language": "en" + }, + { + "@value": "Textabsatz", + "@language": "de" + }, + { + "@value": "Paragraphe", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "

A 'Paragraph' is an unspecified information in a document at any level.

", + "@language": "en" + }, + { + "@value": "

Ein 'Textabschnitt' in einem Dokument auf beliebiger Ebene.

", + "@language": "de" + } + ], + "pig:specializes": { + "@id": "pig:Entity" + }, + "pig:eligibleProperty": [ + { + "@id": "SpecIF:Diagram" + }, + { + "@id": "pig:category" + } + ], + "pig:eligibleTargetLink": [ + ], + "pig:itemType": { + "@id": "pig:Entity" + } + }, + { + "@id": "SpecIF:ModelElement", + "dcterms:title": [ + { + "@value": "Model Element", + "@language": "en" + }, + { + "@value": "Modellelement", + "@language": "de" + } + ], + "dcterms:description": [ + { + "@value": "Is a generalized type for model elements.", + "@language": "en" + }, + { + "@value": "Ist ein generalisierter Typ für Modellelemente.", + "@language": "de" + } + ], + "pig:specializes": { + "@id": "pig:Entity" + }, + "pig:icon": { + "@value": "☆" + }, + "pig:eligibleProperty": [ + { + "@id": "pig:category" + } + ], + "pig:eligibleTargetLink": [ + ], + "pig:itemType": { + "@id": "pig:Entity" + } + }, + { + "@id": "FMC:Actor", + "dcterms:title": [ + { + "@value": "Actor", + "@language": "en" + }, + { + "@value": "Akteur", + "@language": "de" + }, + { + "@value": "Acteur", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "

An 'Actor' is a fundamental model element type representing an active entity, be it an activity, a process step, a function, a system component or a role.

The particular use or original type is specified with a [[dcterms:type]] property of the 'FMC:Actor'. A value of that property should be an ontology-term, such as [[bpmn:processStep]].

", + "@language": "en" + }, + { + "@value": "

Ein 'Akteur' ist ein fundamentaler Modellelementtyp, der eine aktive Entität darstellt, sei es eine Aktivität, ein Prozessschritt, eine Funktion, eine Systemkomponente oder eine Rolle.

Die spezielle Verwendung oder der ursprüngliche Typ wird mit einer [[dcterms:type]] Eigenschaft von 'FMC:Actor' spezifiziert. Die Werte dieser Eigenschaft können Ontologiebegriffe sein, wie z.B. [[bpmn:timer]].

", + "@language": "de" + }, + { + "@value": "

Un 'Acteur' est un type d'élément de modèle fondamental représentant une entité active, qu'il s'agisse d'une activité, d'une étape de processus, d'une fonction, d'un composant de système ou d'un rôle.

L'utilisation particulière ou le type original est spécifié avec une propriété [[dcterms:type]] de 'FMC:Actor'. Les valeurs de cette propriété peuvent être des termes d'ontologie, tels que [[bpmn:timer]].

", + "@language": "fr" + } + ], + "pig:specializes": { + "@id": "SpecIF:ModelElement" + }, + "pig:icon": { + "@value": "□" + }, + "pig:eligibleProperty": [ + ], + "pig:eligibleTargetLink": [ + ], + "pig:itemType": { + "@id": "pig:Entity" + } + }, + { + "@id": "SpecIF:Collection", + "dcterms:title": [ + { + "@value": "Collection or Group", + "@language": "en" + }, + { + "@value": "Kollektion oder Gruppe", + "@language": "de" + }, + { + "@value": "Collection ou Groupe", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "

A 'Collection' is a logical (often conceptual) group of resources linked with a [[SpecIF:contains]] statement. It corresponds to a 'Group' in BPMN Diagrams.

BPMN: An arbitrary set of objects can be defined as a Group to show that they logically belong together. (source: BPMN Tutorial)

", + "@language": "en" + }, + { + "@value": "

Eine 'Kollektion' ist eine logische Gruppierung bestimmter Modellelemente, die per [[SpecIF:contains]] Relation zusammen gefasst sind. Sie entspricht einer 'Gruppe' in BPMN Diagrammen. (source: BPMN Tutorial)

", + "@language": "de" + }, + { + "@value": "

Une 'collection' est un groupe logique (souvent conceptuel) de ressources liées par une déclaration [[SpecIF:contains]]. Elle correspond à un 'groupe' dans les diagrammes BPMN. (source: BPMN Tutoriel)

", + "@language": "fr" + } + ], + "pig:specializes": { + "@id": "SpecIF:ModelElement" + }, + "pig:icon": { + "@value": "⬚" + }, + "pig:eligibleProperty": [ + ], + "pig:eligibleTargetLink": [ + ], + "pig:itemType": { + "@id": "pig:Entity" + } + }, + { + "@id": "FMC:State", + "dcterms:title": [ + { + "@value": "State", + "@language": "en" + }, + { + "@value": "Zustand", + "@language": "de" + }, + { + "@value": "État", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "

A 'State' is a fundamental model element type representing a passive entity, be it a value, a condition, an information storage or even a physical shape.

The particular use or the original type is specified with a [[dcterms:type]] property of the 'FMC:State'. A value of that property should bean ontology-term, such as [[bpmn:dataObject]].

", + "@language": "en" + }, + { + "@value": "

Ein 'Zustand' ist ein fundamentaler Modellelementtyp, der eine passive Entität darstellt, sei es ein Wert, ein Dokument, ein Informationsspeicher, eine Bedingung oder eine physische Beschaffenheit.

Die spezielle Verwendung oder der ursprüngliche Typ wird mit einer [[dcterms:type]] Eigenschaft von 'FMC:State' spezifiziert. Die Werte dieser Eigenschaft können Ontologiebegriffe sein, wie z.B. [[ArchiMate:DataObject]].

", + "@language": "de" + }, + { + "@value": "

Un 'État' est un type d'élément de modèle fondamental représentant une entité passive, qu'il s'agisse d'une valeur, d'une condition, d'un stockage d'informations ou même d'une forme physique.

L'utilisation particulière ou le type original est spécifié avec une propriété [[dcterms:type]] de 'FMC:State'. Les valeurs de cette propriété peuvent être des termes d'ontologie, tels que [[ArchiMate:DataObject]].

", + "@language": "fr" + } + ], + "pig:specializes": { + "@id": "SpecIF:ModelElement" + }, + "pig:icon": { + "@value": "○" + }, + "pig:eligibleProperty": [ + ], + "pig:eligibleTargetLink": [ + ], + "pig:itemType": { + "@id": "pig:Entity" + } + }, + { + "@id": "FMC:Event", + "dcterms:title": [ + { + "@value": "Event", + "@language": "en" + }, + { + "@value": "Ereignis", + "@language": "de" + }, + { + "@value": "Évenement", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "

An 'Event' is a fundamental model element type representing a time reference, a change in condition/value or more generally a synchronization primitive.

The particular use or the original type is specified with a [[dcterms:type]] property of the 'FMC:Event'. A value of that property should be an ontology-term, such as [[bpmn:startEvent]].

", + "@language": "en" + }, + { + "@value": "

Ein 'Ereignis' ist ein fundamentaler Modellelementtyp, der eine Zeitreferenz, eine Änderung einer Bedingung/eines Wertes oder allgemeiner ein Synchronisationsmittel darstellt.

Die spezielle Verwendung oder der ursprüngliche Typ wird mit einer [[dcterms:type]] Eigenschaft von 'FMC:Event' spezifiziert. Die Werte dieser Eigenschaft sollen Ontologiebegriffe sein, wie z.B. [[bpmn:startEvent]].

", + "@language": "de" + }, + { + "@value": "

Un 'Événement' est un type d'élément de modèle fondamental représentant une référence temporelle, un changement de condition/valeur ou plus généralement une primitive de synchronisation.

L'utilisation particulière ou le type original est spécifié avec une propriété [[dcterms:type]] de 'FMC:Event'. Les valeurs de cette propriété peuvent être des termes d'ontologie, tels que [[bpmn:startEvent]].

", + "@language": "fr" + } + ], + "pig:specializes": { + "@id": "SpecIF:ModelElement" + }, + "pig:icon": { + "@value": "♢" + }, + "pig:eligibleProperty": [ + ], + "pig:eligibleTargetLink": [ + ], + "pig:itemType": { + "@id": "pig:Entity" + } + }, + { + "@id": "uml:Package", + "dcterms:title": [ + { + "@value": "Package", + "@language": "en" + } + ], + "pig:specializes": { + "@id": "SpecIF:Collection" + }, + "pig:eligibleProperty": [ + ], + "pig:eligibleTargetLink": [ + ], + "pig:itemType": { + "@id": "pig:Entity" + } + }, + { + "@id": "IREB:Requirement", + "dcterms:title": [ + { + "@value": "Requirement", + "@language": "en" + }, + { + "@value": "Anforderung", + "@language": "de" + }, + { + "@value": "Exigence", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "

A 'Requirement' is a singular documented physical and functional need that a particular design, product or process must be able to perform. (source: Wikipedia)

Definition:

  1. A condition or capability needed by a user to solve a problem or achieve an objective.
  2. A condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed documents.
  3. A documented representation of a condition or capability as in (1) or (2).

Note: The definition above is the classic one from IEEE Std 610.12 of 1990. Alternatively, we also give a more modern definition:

  1. A need perceived by a stakeholder.
  2. A capability or property that a system shall have.
  3. A documented representation of a need, capability or property.
", + "@language": "en" + }, + { + "@value": "

Eine 'Anforderung' ist ein einzelnes dokumentiertes physisches und funktionales Bedürfnis, das ein bestimmter Entwurf, ein Produkt oder ein Prozess erfüllen muss. (source: Wikipedia)

Definition:

  1. Eine Bedingung oder Fähigkeit, die ein Benutzer benötigt, um ein Problem zu lösen oder ein Ziel zu erreichen.
  2. Eine Bedingung oder Fähigkeit, die ein System oder eine Systemkomponente erfüllen oder besitzen muss, um einen Vertrag, eine Norm, eine Spezifikation oder ein anderes formal vorgeschriebenes Dokument zu erfüllen.
  3. Eine dokumentierte Darstellung einer Bedingung oder Fähigkeit wie in (1) oder (2).

Anmerkung: Die obige Definition ist die klassische Definition aus IEEE Std 610.12 von 1990. Alternativ geben wir auch eine modernere Definition an:

  1. Ein von einem Stakeholder wahrgenommener Bedarf.
  2. Eine Fähigkeit oder Eigenschaft, die ein System haben soll.
  3. Eine dokumentierte Darstellung eines Bedarfs, einer Fähigkeit oder Eigenschaft.
", + "@language": "de" + }, + { + "@value": "

Une 'Exigence' est un besoin physique et fonctionnel unique et documenté qu'une conception, un produit ou un processus particulier doit pouvoir satisfaire. (source: Wikipedia)

Définition:

  1. Condition ou capacité dont un utilisateur a besoin pour résoudre un problème ou atteindre un objectif.
  2. Condition ou capacité qui doit être remplie ou possédée par un système ou un composant de système pour satisfaire à un contrat, à une norme, à une spécification ou à d'autres documents imposés officiellement.
  3. Une représentation documentée d'une condition ou d'une capacité comme dans (1) ou (2).

Remarque: La définition ci-dessus est la définition classique de la norme IEEE 610.12 de 1990. Nous donnons également une définition plus moderne:

  1. Un besoin perçu par une partie prenante;
  2. Une capacité ou une propriété qu'un système doit avoir.
  3. Une représentation documentée d'un besoin, d'une capacité ou d'une propriété.
", + "@language": "fr" + } + ], + "pig:specializes": { + "@id": "pig:Entity" + }, + "pig:icon": { + "@value": "↯" + }, + "pig:eligibleProperty": [ + { + "@id": "pig:category" + } + ], + "pig:eligibleTargetLink": [ + ], + "pig:itemType": { + "@id": "pig:Entity" + } + }, + { + "@id": "SpecIF:relates", + "dcterms:title": [ + { + "@value": "relates", + "@language": "en" + }, + { + "@value": "verbindet", + "@language": "de" + }, + { + "@value": "relie", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "Is a generalized type for model relations.", + "@language": "en" + }, + { + "@value": "Ist ein generalisierter Typ für Modellrelationen.", + "@language": "de" + } + ], + "pig:specializes": { + "@id": "pig:Relationship" + }, + "pig:eligibleProperty": [ + { + "@id": "pig:category" + } + ], + "pig:itemType": { + "@id": "pig:Relationship" + }, + "pig:eligibleSourceLink": { + "@id": "SpecIF:relates-toSource" + }, + "pig:eligibleTargetLink": { + "@id": "SpecIF:relates-toTarget" + } + }, + { + "@id": "SpecIF:relates-toSource", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:SourceLink" + }, + "dcterms:title": [ + { + "@value": "SpecIF:relates to source" + } + ], + "dcterms:description": [ + { + "@value": "Connects the source of SpecIF:relates" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ] + }, + { + "@id": "SpecIF:relates-toTarget", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "dcterms:title": [ + { + "@value": "SpecIF:relates to target" + } + ], + "dcterms:description": [ + { + "@value": "Connects the target of SpecIF:relates" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ] + }, + { + "@id": "dcterms:hasPart", + "dcterms:title": [ + { + "@value": "has part", + "@language": "en" + }, + { + "@value": "enthält", + "@language": "de" + }, + { + "@value": "contient", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "A related resource that is included either physically or logically in the described resource.\n\n*Comment: This property is intended to be used with non-literal values. This property is an inverse property of [[dcterms:isPartOf]].*", + "@language": "en" + } + ], + "pig:specializes": { + "@id": "SpecIF:relates" + }, + "pig:eligibleProperty": [ + ], + "pig:itemType": { + "@id": "pig:Relationship" + }, + "pig:eligibleSourceLink": { + "@id": "dcterms:hasPart-toSource" + }, + "pig:eligibleTargetLink": { + "@id": "dcterms:hasPart-toTarget" + } + }, + { + "@id": "dcterms:hasPart-toSource", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:SourceLink" + }, + "dcterms:title": [ + { + "@value": "dcterms:hasPart to source" + } + ], + "dcterms:description": [ + { + "@value": "Connects the source of dcterms:hasPart" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "FMC:Actor" + }, + { + "@id": "FMC:State" + }, + { + "@id": "SpecIF:Collection" + }, + { + "@id": "SpecIF:ModelElement" + }, + { + "@id": "o:RC-UmlClass" + } + ] + }, + { + "@id": "dcterms:hasPart-toTarget", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "dcterms:title": [ + { + "@value": "dcterms:hasPart to target" + } + ], + "dcterms:description": [ + { + "@value": "Connects the target of dcterms:hasPart" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "FMC:Actor" + }, + { + "@id": "FMC:State" + }, + { + "@id": "SpecIF:Collection" + }, + { + "@id": "SpecIF:ModelElement" + }, + { + "@id": "o:RC-UmlPort" + }, + { + "@id": "o:RC-UmlClass" + } + ] + }, + { + "@id": "SpecIF:contains", + "dcterms:title": [ + { + "@value": "contains", + "@language": "en" + }, + { + "@value": "enthält", + "@language": "de" + }, + { + "@value": "contient", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "General containment, such as:\n- Package-A *contains* Diagram-B\n- Collection-1 *contains* DataObject-1.1\n\nNot to confound with *[[dcterms:hasPart]]*.", + "@language": "en" + } + ], + "pig:specializes": { + "@id": "SpecIF:relates" + }, + "pig:eligibleProperty": [ + ], + "pig:itemType": { + "@id": "pig:Relationship" + }, + "pig:eligibleSourceLink": { + "@id": "SpecIF:contains-toSource" + }, + "pig:eligibleTargetLink": { + "@id": "SpecIF:contains-toTarget" + } + }, + { + "@id": "SpecIF:contains-toSource", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:SourceLink" + }, + "dcterms:title": [ + { + "@value": "SpecIF:contains to source" + } + ], + "dcterms:description": [ + { + "@value": "Connects the source of SpecIF:contains" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "FMC:Actor" + }, + { + "@id": "FMC:State" + }, + { + "@id": "SpecIF:Collection" + }, + { + "@id": "uml:Package" + } + ] + }, + { + "@id": "SpecIF:contains-toTarget", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "dcterms:title": [ + { + "@value": "SpecIF:contains to target" + } + ], + "dcterms:description": [ + { + "@value": "Connects the target of SpecIF:contains" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "FMC:Actor" + }, + { + "@id": "FMC:State" + }, + { + "@id": "FMC:Event" + }, + { + "@id": "SpecIF:Collection" + }, + { + "@id": "uml:Package" + }, + { + "@id": "SpecIF:ModelElement" + }, + { + "@id": "o:RC-SpecifView" + }, + { + "@id": "o:RC-PigView" + }, + { + "@id": "pig:View" + }, + { + "@id": "IREB:Requirement" + } + ] + }, + { + "@id": "oslc_rm:satisfies", + "dcterms:title": [ + { + "@value": "satisfies", + "@language": "en" + }, + { + "@value": "erfüllt", + "@language": "de" + }, + { + "@value": "satisfait", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "

The object is satisfied by the subject. (source: OSLC)

SpecIF suggests that the subject is confined to a model element, e.g, a [[FMC:Actor]] or [[FMC:State]], and the object is confined to a [[IREB:Requirement]]. More concretely, an example for this type of statement is 'Component-X satisfies 'Requirement-4711'.

", + "@language": "en" + } + ], + "pig:specializes": { + "@id": "pig:Relationship" + }, + "pig:eligibleProperty": [ + ], + "pig:itemType": { + "@id": "pig:Relationship" + }, + "pig:eligibleSourceLink": { + "@id": "oslc_rm:satisfies-toSource" + }, + "pig:eligibleTargetLink": { + "@id": "oslc_rm:satisfies-toTarget" + } + }, + { + "@id": "oslc_rm:satisfies-toSource", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:SourceLink" + }, + "dcterms:title": [ + { + "@value": "oslc_rm:satisfies to source" + } + ], + "dcterms:description": [ + { + "@value": "Connects the source of oslc_rm:satisfies" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ] + }, + { + "@id": "oslc_rm:satisfies-toTarget", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "dcterms:title": [ + { + "@value": "oslc_rm:satisfies to target" + } + ], + "dcterms:description": [ + { + "@value": "Connects the target of oslc_rm:satisfies" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "IREB:Requirement" + } + ] + }, + { + "@id": "IREB:refines", + "dcterms:title": [ + { + "@value": "refines", + "@language": "en" + }, + { + "@value": "verfeinert", + "@language": "de" + }, + { + "@value": "affine", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "

A [[IREB:Requirement]] 'refines' another [[IREB:Requirement]].

", + "@language": "en" + } + ], + "pig:specializes": { + "@id": "pig:Relationship" + }, + "pig:eligibleProperty": [ + ], + "pig:itemType": { + "@id": "pig:Relationship" + }, + "pig:eligibleSourceLink": { + "@id": "IREB:refines-toSource" + }, + "pig:eligibleTargetLink": { + "@id": "IREB:refines-toTarget" + } + }, + { + "@id": "IREB:refines-toSource", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:SourceLink" + }, + "dcterms:title": [ + { + "@value": "IREB:refines to source" + } + ], + "dcterms:description": [ + { + "@value": "Connects the source of IREB:refines" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "IREB:Requirement" + } + ] + }, + { + "@id": "IREB:refines-toTarget", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "dcterms:title": [ + { + "@value": "IREB:refines to target" + } + ], + "dcterms:description": [ + { + "@value": "Connects the target of IREB:refines" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "IREB:Requirement" + } + ] + }, + { + "@id": "sysml:Allocate", + "dcterms:title": [ + { + "@value": "is allocated to", + "@language": "en" + }, + { + "@value": "zugeordnet zu", + "@language": "de" + }, + { + "@value": "allouée à", + "@language": "fr" + } + ], + "dcterms:description": [ + { + "@value": "

An [[FMC:Actor]] is allocated to another [[FMC:Actor]] (e.g. a logical function is allocated to a physical component.

", + "@language": "en" + } + ], + "pig:specializes": { + "@id": "pig:Relationship" + }, + "pig:eligibleProperty": [ + ], + "pig:itemType": { + "@id": "pig:Relationship" + }, + "pig:eligibleSourceLink": { + "@id": "sysml:Allocate-toSource" + }, + "pig:eligibleTargetLink": { + "@id": "sysml:Allocate-toTarget" + } + }, + { + "@id": "sysml:Allocate-toSource", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:SourceLink" + }, + "dcterms:title": [ + { + "@value": "sysml:Allocate to source" + } + ], + "dcterms:description": [ + { + "@value": "Connects the source of sysml:Allocate" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "SpecIF:ModelElement" + } + ] + }, + { + "@id": "sysml:Allocate-toTarget", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "dcterms:title": [ + { + "@value": "sysml:Allocate to target" + } + ], + "dcterms:description": [ + { + "@value": "Connects the target of sysml:Allocate" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "SpecIF:ModelElement" + } + ] + }, + { + "@id": "uml:ownedBehavior", + "dcterms:title": [ + { + "@value": "has Behavior" + } + ], + "pig:specializes": { + "@id": "pig:Relationship" + }, + "pig:eligibleProperty": [ + ], + "pig:itemType": { + "@id": "pig:Relationship" + }, + "pig:eligibleSourceLink": { + "@id": "uml:ownedBehavior-toSource" + }, + "pig:eligibleTargetLink": { + "@id": "uml:ownedBehavior-toTarget" + } + }, + { + "@id": "uml:ownedBehavior-toSource", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:SourceLink" + }, + "dcterms:title": [ + { + "@value": "uml:ownedBehavior to source" + } + ], + "dcterms:description": [ + { + "@value": "Connects the source of uml:ownedBehavior" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ] + }, + { + "@id": "uml:ownedBehavior-toTarget", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "dcterms:title": [ + { + "@value": "uml:ownedBehavior to target" + } + ], + "dcterms:description": [ + { + "@value": "Connects the target of uml:ownedBehavior" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "o:RC-UmlStatemachine" + }, + { + "@id": "o:RC-UmlActivity" + }, + { + "@id": "FMC:Actor" + }, + { + "@id": "o:RC-UmlUsecase" + } + ] + }, + { + "@id": "uml:Trigger", + "dcterms:title": [ + { + "@value": "triggers" + } + ], + "pig:specializes": { + "@id": "pig:Relationship" + }, + "pig:eligibleProperty": [ + ], + "pig:itemType": { + "@id": "pig:Relationship" + }, + "pig:eligibleSourceLink": { + "@id": "uml:Trigger-toSource" + }, + "pig:eligibleTargetLink": { + "@id": "uml:Trigger-toTarget" + } + }, + { + "@id": "uml:Trigger-toSource", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:SourceLink" + }, + "dcterms:title": [ + { + "@value": "uml:Trigger to source" + } + ], + "dcterms:description": [ + { + "@value": "Connects the source of uml:Trigger" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ] + }, + { + "@id": "uml:Trigger-toTarget", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "dcterms:title": [ + { + "@value": "uml:Trigger to target" + } + ], + "dcterms:description": [ + { + "@value": "Connects the target of uml:Trigger" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "pig:Entity" + }, + { + "@id": "pig:Relationship" + } + ] + }, + { + "@id": "uml:TransitionSource", + "dcterms:title": [ + { + "@value": "starts from" + } + ], + "pig:specializes": { + "@id": "pig:Relationship" + }, + "pig:eligibleProperty": [ + ], + "pig:itemType": { + "@id": "pig:Relationship" + }, + "pig:eligibleSourceLink": { + "@id": "uml:TransitionSource-toSource" + }, + "pig:eligibleTargetLink": { + "@id": "uml:TransitionSource-toTarget" + } + }, + { + "@id": "uml:TransitionSource-toSource", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:SourceLink" + }, + "dcterms:title": [ + { + "@value": "uml:TransitionSource to source" + } + ], + "dcterms:description": [ + { + "@value": "Connects the source of uml:TransitionSource" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "o:RC-UmlTransition" + }, + { + "@id": "FMC:Actor" + } + ] + }, + { + "@id": "uml:TransitionSource-toTarget", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "dcterms:title": [ + { + "@value": "uml:TransitionSource to target" + } + ], + "dcterms:description": [ + { + "@value": "Connects the target of uml:TransitionSource" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "o:RC-UmlState" + }, + { + "@id": "FMC:State" + } + ] + }, + { + "@id": "uml:TransitionTarget", + "dcterms:title": [ + { + "@value": "ends at" + } + ], + "pig:specializes": { + "@id": "pig:Relationship" + }, + "pig:eligibleProperty": [ + ], + "pig:itemType": { + "@id": "pig:Relationship" + }, + "pig:eligibleSourceLink": { + "@id": "uml:TransitionTarget-toSource" + }, + "pig:eligibleTargetLink": { + "@id": "uml:TransitionTarget-toTarget" + } + }, + { + "@id": "uml:TransitionTarget-toSource", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:SourceLink" + }, + "dcterms:title": [ + { + "@value": "uml:TransitionTarget to source" + } + ], + "dcterms:description": [ + { + "@value": "Connects the source of uml:TransitionTarget" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "o:RC-UmlTransition" + }, + { + "@id": "FMC:Actor" + } + ] + }, + { + "@id": "uml:TransitionTarget-toTarget", + "pig:itemType": { + "@id": "pig:Link" + }, + "pig:specializes": { + "@id": "pig:TargetLink" + }, + "dcterms:title": [ + { + "@value": "uml:TransitionTarget to target" + } + ], + "dcterms:description": [ + { + "@value": "Connects the target of uml:TransitionTarget" + } + ], + "pig:eligibleEndpoint": [ + { + "@id": "o:RC-UmlState" + }, + { + "@id": "FMC:State" + } + ] + }, + { + "@id": "d:_19_0_3_71e0233_1746001337727_31616_14119", + "@type": "uml:Package", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "1. Requirements" + } + ], + "pig:category": [ + { + "@value": "uml:Package", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810549321_335902_14037", + "@type": "pig:View", + "pig:revision": "rev-9405830621", + "dcterms:modified": "2025-11-12T09:28:04.871Z", + "dcterms:title": [ + { + "@value": "Original Requirement Specification" + } + ], + "SpecIF:Diagram": [ + { + "@value": "files_and_images/Original Requirement Specification.png", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:category": [ + { + "@value": "uml:Diagram", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "SpecIF:Notation": [ + { + "@value": "UML Requirement Diagram", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + }, + "pig:shows": [ + { + "@id": "d:_18_5_3_bc402f4_1552810869277_586147_14175", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810948738_707540_14217", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810776263_894029_14121", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813199775_830344_15281", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810644650_650036_14079", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812437056_257578_14975", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812370943_152244_14924", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811136575_459751_14253", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811141795_384989_14263", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813433937_279860_15327", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810808641_447672_14157", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813334959_22842_15317", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813438857_436917_15337", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552810776263_894029_14121", + "@type": "IREB:Requirement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Navigation" + } + ], + "pig:category": [ + { + "@value": "uml:Class", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "The Vehicle shall autonomously choose the best route from the current location C to the target location T by means of a road map and actual traffic conditions." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810869277_586147_14175", + "@type": "IREB:Requirement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Road Driving" + } + ], + "pig:category": [ + { + "@value": "uml:Class", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "The vehicle shall be able to follow a selected road." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810644650_650036_14079", + "@type": "IREB:Requirement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Transport to Target" + } + ], + "pig:category": [ + { + "@value": "uml:Class", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "As a customer I would like to get a parcel delivered from the current location C to a target location T. " + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812370943_152244_14924", + "@type": "IREB:Requirement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Location as Postal Address" + } + ], + "pig:category": [ + { + "@value": "uml:Class", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "A location may be specified as a postal address." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813199775_830344_15281", + "@type": "IREB:Requirement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Obstacle Avoidance" + } + ], + "pig:category": [ + { + "@value": "uml:Class", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "The vehicle shall not hit a person or an obstacle on the road." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810948738_707540_14217", + "@type": "IREB:Requirement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Safe Driving" + } + ], + "pig:category": [ + { + "@value": "uml:Class", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "The vehicle shall drive no faster than allowed or adequate for the actual road condition." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812437056_257578_14975", + "@type": "IREB:Requirement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Loacation as GPS Coordinate" + } + ], + "pig:category": [ + { + "@value": "uml:Class", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "A location may be specified as GPS Coordinate with Longitude and Latitude in Degrees." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "@type": "uml:Package", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "2. Functional Layer" + } + ], + "pig:category": [ + { + "@value": "uml:Package", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811870216_105923_14824", + "@type": "pig:View", + "pig:revision": "rev-11094738149", + "dcterms:modified": "2025-11-12T09:28:21.131Z", + "dcterms:title": [ + { + "@value": "Functional Decomposition" + } + ], + "SpecIF:Diagram": [ + { + "@value": "files_and_images/Functional Decomposition.png", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:category": [ + { + "@value": "uml:Diagram", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "SpecIF:Notation": [ + { + "@value": "SysML Block Definition Diagram", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + }, + "pig:shows": [ + { + "@id": "d:_18_5_3_bc402f4_1552814104357_719492_15607", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812805784_548404_15062", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552815791106_548984_16360", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814523707_628151_15988", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1556615164506_303870_14975", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811937697_690731_14862", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812663506_709974_15011", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813556602_820961_15353", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810948738_707540_14217", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810776263_894029_14121", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1556615212765_548060_15021", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814194319_862392_15683", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814246502_629251_15775", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_e40094_1718632293724_754873_14112", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810869277_586147_14175", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814212889_663150_15729", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813038602_222864_15129", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811510062_903764_14503", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814266523_206006_15821", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813818846_218375_15548", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_e40094_1718632569345_311906_14190", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604324293194_85516_13666", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_e40094_1718632549973_831908_14172", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604324214402_6480_13631", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604324487193_60359_13731", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604323867629_562362_13452", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813096475_160687_15177", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1556615683513_411874_15073", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1556615721418_831605_15106", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604323821792_371188_13426", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813723040_381289_15401", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813102494_993665_15207", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604324465452_775050_13715", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604324188817_384398_13615", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552815590348_672436_16293", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552815653359_771130_16352", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604323888993_530325_13468", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813795106_879353_15508", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604324636141_429081_13763", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604324764626_856811_13779", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604324512097_628722_13747", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813870706_981259_15588", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604324447693_373448_13698", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604324321433_274293_13682", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552815541056_996851_16231", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552813556602_820961_15353", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Brake in an Emergency" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "Take the vehicle to a full stop in the shortest time possible without loosing control over the trajectory." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814212889_663150_15729", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Set Speed" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "The (autonomous) driver's speed command (gas pedal position)." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1556615164506_303870_14975", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Turn Right" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "Take a right turn at a road intersection. Observe the traffic entering the same lane and avoid a collision, if another vehicle does not observe the priority rules." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814194319_862392_15683", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Set Radius" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "The (autonomous) driver's steering command (steering wheel position)." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812663506_709974_15011", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Navigate" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "Select a path to get from the current position to the target." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814523707_628151_15988", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Calculate Accelerations" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1556615212765_548060_15021", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Turn Left" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "Take a left turn in a road intersection. Observe the priority rules and avoid traffic on the two lanes you are crossing." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811937697_690731_14862", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Drive to Target" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "Manoevre the vehicle from the current position to the selected target." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814246502_629251_15775", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Set Acceleration Left" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813038602_222864_15129", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Select an adequate Speed" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "Taking into account road condition and weather, select a safe speed." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552815791106_548984_16360", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Set Acceleration Right" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812805784_548404_15062", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Follow the Road" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "Keep the vehicle on the selected road." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814266523_206006_15821", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Apply Brake" + } + ], + "pig:category": [ + { + "@value": "RFLP:Function", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "@type": "uml:Package", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "3. Logical Layer" + } + ], + "pig:category": [ + { + "@value": "uml:Package", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027287147_82140_14431", + "@type": "pig:View", + "pig:revision": "rev-7887707545", + "dcterms:modified": "2025-11-12T09:28:38.225Z", + "dcterms:title": [ + { + "@value": "Logical Decomposition" + } + ], + "SpecIF:Diagram": [ + { + "@value": "files_and_images/Logical Decomposition.png", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:category": [ + { + "@value": "uml:Diagram", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "SpecIF:Notation": [ + { + "@value": "SysML Block Definition Diagram", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + }, + "pig:shows": [ + { + "@id": "d:_18_5_3_bc402f4_1552814104357_719492_15607", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811538626_715866_14549", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_e40094_1718632293724_754873_14112", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604360793737_196507_13523", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811469014_293642_14411", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811454014_108965_14365", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552827771600_60767_16481", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811554859_819240_14595", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811510062_903764_14503", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811672063_243990_14798", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_e40094_1718634030433_51877_14234", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604360962045_534106_13570", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814131280_1190_15654", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811613008_58411_14648", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811666192_832840_14768", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552827804167_216283_16528", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811619502_982677_14678", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811653332_976698_14708", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_e40094_1718632293724_754873_14112", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Drive Right" + } + ], + "pig:category": [ + { + "@value": "RFLP:Logical_System", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "The wheel with motor and brake on the right side. The motor can accelerate and decelerate. The motor controller is \"4-quadrant\" and can supply electrical current for recharging the batteries." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552827771600_60767_16481", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Track Sensor" + } + ], + "pig:category": [ + { + "@value": "RFLP:Logical_System", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811469014_293642_14411", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Body" + } + ], + "pig:category": [ + { + "@value": "RFLP:Logical_System", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811510062_903764_14503", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Drive Left" + } + ], + "pig:category": [ + { + "@value": "RFLP:Logical_System", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "dcterms:description": [ + { + "@value": "The wheel with motor and brake on the left side. The motor can accelerate and decelerate. The motor controller is \"4-quadrant\" and can supply electrical current for recharging the batteries." + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "LEGO Mindstorms Vehicle" + } + ], + "pig:category": [ + { + "@value": "RFLP:Logical_System", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811538626_715866_14549", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Support Front" + } + ], + "pig:category": [ + { + "@value": "RFLP:Logical_System", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814104357_719492_15607", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Controller" + } + ], + "pig:category": [ + { + "@value": "RFLP:Logical_System", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027630926_778269_14800", + "@type": "pig:View", + "pig:revision": "rev-11807243868", + "dcterms:modified": "2025-11-12T09:29:01.139Z", + "dcterms:title": [ + { + "@value": "Controller State Machine" + } + ], + "SpecIF:Diagram": [ + { + "@value": "files_and_images/Controller State Machine.png", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:category": [ + { + "@value": "uml:Diagram", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "SpecIF:Notation": [ + { + "@value": "SysML State Machine Diagram", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + }, + "pig:shows": [ + { + "@id": "d:_19_0_3_71e0233_1746027747207_605800_14880", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028306923_558192_15006", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027631039_116153_14834", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027847324_539644_14916", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028149871_266697_14985", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028183413_413266_14988", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028605370_466818_15028", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027920180_215768_14934", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027631053_836894_14835", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028442990_717820_15013", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028275862_880382_14999", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027631056_691503_14836", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027731735_863978_14871", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027704287_746273_14855", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029049431_401220_15072", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027837044_867827_14913", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028839192_503107_15053", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028827712_739888_15050", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028061993_960870_14971", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028073773_979720_14974", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027804266_719052_14896", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028508430_363448_15020", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028822501_191804_15047", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027731735_371186_14872", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027967661_707482_14950", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027630942_863638_14801", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027630942_464786_14802", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029024681_691401_15066", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028118776_36360_14979", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029726958_589946_15078", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028195311_519257_14989", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028216231_986687_14993", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028282302_943711_15000", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028313498_548385_15007", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028899054_101006_15058", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028954791_356054_15062", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028884803_562591_15054", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029056197_950529_15073", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028540160_854095_15021", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028483612_410592_15014", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ], + "pig:depicts": [ + { + "@id": "d:_19_0_3_71e0233_1746027630942_863638_14801", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_71e0233_1746027631039_116153_14834", + "@type": "FMC:State", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "entry" + } + ], + "pig:category": [ + { + "@value": "uml:Pseudostate", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027631053_836894_14835", + "@type": "FMC:State", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Off" + } + ], + "pig:category": [ + { + "@value": "uml:State", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027731735_863978_14871", + "@type": "FMC:State", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "entry" + } + ], + "pig:category": [ + { + "@value": "uml:Pseudostate", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027747207_605800_14880", + "@type": "FMC:State", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Navigating" + } + ], + "pig:category": [ + { + "@value": "uml:State", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027804266_719052_14896", + "@type": "FMC:State", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Defining Target" + } + ], + "pig:category": [ + { + "@value": "uml:State", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "@type": "FMC:State", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Following the Road" + } + ], + "pig:category": [ + { + "@value": "uml:State", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027920180_215768_14934", + "@type": "FMC:State", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Turning Right" + } + ], + "pig:category": [ + { + "@value": "uml:State", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027967661_707482_14950", + "@type": "FMC:State", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Turning Left" + } + ], + "pig:category": [ + { + "@value": "uml:State", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028605370_466818_15028", + "@type": "FMC:State", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Standing" + } + ], + "pig:category": [ + { + "@value": "uml:State", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027837044_867827_14913", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "entry→Defining Target" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027847324_539644_14916", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Defining Target→Navigating" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028061993_960870_14971", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Navigating→Following the Road" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028073773_979720_14974", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Following the Road→Navigating" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028149871_266697_14985", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Following the Road→Turning Right" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028183413_413266_14988", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Turning Right→Following the Road" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028275862_880382_14999", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Following the Road→Turning Left" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028306923_558192_15006", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Turning Left→Following the Road" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028822501_191804_15047", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Following the Road→Standing" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028827712_739888_15050", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Following the Road→Standing" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028839192_503107_15053", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Standing→Following the Road" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029049431_401220_15072", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Standing→Defining Target" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028508430_363448_15020", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Standing→Off" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027704287_746273_14855", + "@type": "FMC:State", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "On" + } + ], + "pig:category": [ + { + "@value": "uml:State", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027631056_691503_14836", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "entry→Off" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028442990_717820_15013", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Off→On" + } + ], + "pig:category": [ + { + "@value": "uml:Transition", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811554859_819240_14595", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Support Rear" + } + ], + "pig:category": [ + { + "@value": "RFLP:Logical_System", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811454014_108965_14365", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Chassis" + } + ], + "pig:category": [ + { + "@value": "RFLP:Logical_System", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604360793737_196507_13523", + "@type": "SpecIF:ModelElement", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Collision Alarm \nSensor" + } + ], + "pig:category": [ + { + "@value": "RFLP:Logical_System", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028118776_36360_14979", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "start_driving!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028195311_519257_14989", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "turn_right!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028216231_986687_14993", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "turned_right!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028282302_943711_15000", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "turn_left!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028313498_548385_15007", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "turned_left!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028483612_410592_15014", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "switch_on!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028540160_854095_15021", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "switch_off!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028884803_562591_15054", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "continue_driving!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028899054_101006_15058", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "halt!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028954791_356054_15062", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "emergency_brake!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029024681_691401_15066", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "navigate!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029056197_950529_15073", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "new_target!" + } + ], + "pig:category": [ + { + "@value": "uml:SignalEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029726958_589946_15078", + "@type": "FMC:Event", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "re-navigate!" + } + ], + "pig:category": [ + { + "@value": "uml:CallEvent", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027630942_863638_14801", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "Controller State Machine" + } + ], + "pig:category": [ + { + "@value": "uml:StateMachine", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027630942_464786_14802", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "unnamed uml:Region" + } + ], + "pig:category": [ + { + "@value": "uml:Region", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027731735_371186_14872", + "@type": "FMC:Actor", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "dcterms:title": [ + { + "@value": "unnamed uml:Region" + } + ], + "pig:category": [ + { + "@value": "uml:Region", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + } + }, + { + "@id": "d:S-contains-10399921810", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001337727_31616_14119", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810549321_335902_14037", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10330010667", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001337727_31616_14119", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810776263_894029_14121", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10652725449", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001337727_31616_14119", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810869277_586147_14175", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-11927092777", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001337727_31616_14119", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810644650_650036_14079", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8881937697", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001337727_31616_14119", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552812370943_152244_14924", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10783514673", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001337727_31616_14119", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552813199775_830344_15281", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10945506396", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001337727_31616_14119", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810948738_707540_14217", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-11407335150", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001337727_31616_14119", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552812437056_257578_14975", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-9116397029", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811870216_105923_14824", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10022314071", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552813556602_820961_15353", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-9131303994", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814212889_663150_15729", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8559115413", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1556615164506_303870_14975", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10881577187", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814194319_862392_15683", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-9119481481", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552812663506_709974_15011", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-12098040971", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814523707_628151_15988", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10442923979", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1556615212765_548060_15021", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-11694297906", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811937697_690731_14862", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-9652197932", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814246502_629251_15775", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-9362975811", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552813038602_222864_15129", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10771124872", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552815791106_548984_16360", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-9168262784", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552812805784_548404_15062", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8878119738", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814266523_206006_15821", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604324487193_60359_13731", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552812805784_548404_15062", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814194319_862392_15683", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604323888993_530325_13468", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552813556602_820961_15353", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814523707_628151_15988", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604324214402_6480_13631", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552814523707_628151_15988", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552815791106_548984_16360", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604324447693_373448_13698", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1556615212765_548060_15021", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814194319_862392_15683", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1556615721418_831605_15106", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811937697_690731_14862", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1556615212765_548060_15021", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1556615683513_411874_15073", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811937697_690731_14862", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1556615164506_303870_14975", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552813723040_381289_15401", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811937697_690731_14862", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552813556602_820961_15353", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604324465452_775050_13715", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1556615164506_303870_14975", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814194319_862392_15683", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604324512097_628722_13747", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1556615164506_303870_14975", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552813038602_222864_15129", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604323867629_562362_13452", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552814212889_663150_15729", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814523707_628151_15988", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604324293194_85516_13666", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552814523707_628151_15988", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814266523_206006_15821", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604324321433_274293_13682", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1556615212765_548060_15021", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552813038602_222864_15129", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604324636141_429081_13763", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552812805784_548404_15062", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552813038602_222864_15129", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552813096475_160687_15177", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811937697_690731_14862", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552812663506_709974_15011", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604324764626_856811_13779", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552813038602_222864_15129", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814212889_663150_15729", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604323821792_371188_13426", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552814194319_862392_15683", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814523707_628151_15988", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552813102494_993665_15207", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811937697_690731_14862", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552812805784_548404_15062", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604324188817_384398_13615", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552814523707_628151_15988", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814246502_629251_15775", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10564266575", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027287147_82140_14431", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-11515557626", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_e40094_1718632293724_754873_14112", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-9482395742", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552827771600_60767_16481", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-9179309009", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811469014_293642_14411", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8743767210", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811510062_903764_14503", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8520696102", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8274829800", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811538626_715866_14549", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8790231064", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814104357_719492_15607", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-ownedBehavior-10906203416", + "@type": "uml:ownedBehavior", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:ownedBehavior-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552814104357_719492_15607", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:ownedBehavior-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027630942_863638_14801", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8869082288", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027630942_863638_14801", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-9973927808", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027630926_778269_14800", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-11028317306", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027630942_863638_14801", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027630942_464786_14802", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10256822099", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027630942_464786_14802", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027631039_116153_14834", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8821517563", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027630942_464786_14802", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027631053_836894_14835", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8168210938", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027630942_464786_14802", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027704287_746273_14855", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-11015906742", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027704287_746273_14855", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027731735_371186_14872", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10159638974", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027731735_371186_14872", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027731735_863978_14871", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-11234558713", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027731735_371186_14872", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027747207_605800_14880", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8004350392", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027731735_371186_14872", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027804266_719052_14896", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10687126464", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027731735_371186_14872", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-9457711542", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027731735_371186_14872", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027920180_215768_14934", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10206589560", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027731735_371186_14872", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027967661_707482_14950", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-11254687961", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027731735_371186_14872", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028605370_466818_15028", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-10764992335", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027837044_867827_14913", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027731735_863978_14871", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-10266389823", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027837044_867827_14913", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027804266_719052_14896", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-9736561245", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027847324_539644_14916", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027804266_719052_14896", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-11306959252", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027847324_539644_14916", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027747207_605800_14880", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-11057421225", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746029024681_691401_15066", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027847324_539644_14916", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-10753048967", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028061993_960870_14971", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027747207_605800_14880", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-10164860996", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028061993_960870_14971", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-9989729747", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028118776_36360_14979", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028061993_960870_14971", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-8258457006", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028073773_979720_14974", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-8326005469", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028073773_979720_14974", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027747207_605800_14880", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-11586041943", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746029726958_589946_15078", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028073773_979720_14974", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-10663437825", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028149871_266697_14985", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-10827655661", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028149871_266697_14985", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027920180_215768_14934", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-11897440242", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028195311_519257_14989", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028149871_266697_14985", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-10501816934", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028183413_413266_14988", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027920180_215768_14934", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-9816959590", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028183413_413266_14988", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-8400858676", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028216231_986687_14993", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028183413_413266_14988", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-9888010871", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028275862_880382_14999", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-7971585829", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028275862_880382_14999", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027967661_707482_14950", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-8791358862", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028282302_943711_15000", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028275862_880382_14999", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-8873253251", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028306923_558192_15006", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027967661_707482_14950", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-10269038785", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028306923_558192_15006", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-8710683288", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028313498_548385_15007", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028306923_558192_15006", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-8996430444", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028822501_191804_15047", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-11699322235", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028822501_191804_15047", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028605370_466818_15028", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-9704245737", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028899054_101006_15058", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028822501_191804_15047", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-8860759247", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028827712_739888_15050", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-11563651038", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028827712_739888_15050", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028605370_466818_15028", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-8483779004", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028954791_356054_15062", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028827712_739888_15050", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-11316265439", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028839192_503107_15053", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028605370_466818_15028", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-8092734140", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028839192_503107_15053", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-9344676895", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028884803_562591_15054", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028839192_503107_15053", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-10914308453", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746029049431_401220_15072", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028605370_466818_15028", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-10482894906", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746029049431_401220_15072", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027804266_719052_14896", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-10198907956", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746029056197_950529_15073", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746029049431_401220_15072", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-10203202111", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028508430_363448_15020", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028605370_466818_15028", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-10388500447", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028508430_363448_15020", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027631053_836894_14835", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-8226880185", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028540160_854095_15021", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028508430_363448_15020", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-10505811433", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027631056_691503_14836", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027631039_116153_14834", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-11750312327", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746027631056_691503_14836", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027631053_836894_14835", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-startsFrom-9662251988", + "@type": "uml:TransitionSource", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionSource-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028442990_717820_15013", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionSource-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027631053_836894_14835", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-endsAt-10042078921", + "@type": "uml:TransitionTarget", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:TransitionTarget-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028442990_717820_15013", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:TransitionTarget-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746027704287_746273_14855", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-triggers-11689502440", + "@type": "uml:Trigger", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "uml:Trigger-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746028483612_410592_15014", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "uml:Trigger-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028442990_717820_15013", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8524437672", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811554859_819240_14595", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10606577794", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811454014_108965_14365", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10600261667", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_bc402f4_1604360793737_196507_13523", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8034687851", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028118776_36360_14979", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8284367231", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028195311_519257_14989", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-11116214028", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028216231_986687_14993", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-11694709529", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028282302_943711_15000", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-12033035043", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028313498_548385_15007", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-9345097305", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028483612_410592_15014", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10887885853", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028540160_854095_15021", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-11330005271", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028884803_562591_15054", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10697539955", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028899054_101006_15058", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8277838339", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746028954791_356054_15062", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10218959244", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746029024681_691401_15066", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-10331126120", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746029056197_950529_15073", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:S-contains-8478289863", + "@type": "SpecIF:contains", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "SpecIF:contains-toSource": [ + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "SpecIF:contains-toTarget": [ + { + "@id": "d:_19_0_3_71e0233_1746029726958_589946_15078", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552814131280_1190_15654", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814104357_719492_15607", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_bc402f4_1604360962045_534106_13570", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_19_0_3_bc402f4_1604360793737_196507_13523", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552811613008_58411_14648", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811454014_108965_14365", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_e40094_1718634030433_51877_14234", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_19_0_3_e40094_1718632293724_754873_14112", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552811619502_982677_14678", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811469014_293642_14411", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552827804167_216283_16528", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552827771600_60767_16481", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552811666192_832840_14768", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811538626_715866_14549", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552811672063_243990_14798", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811554859_819240_14595", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552811653332_976698_14708", + "@type": "dcterms:hasPart", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "dcterms:hasPart-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "dcterms:hasPart-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811510062_903764_14503", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552810808641_447672_14157", + "@type": "IREB:refines", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "IREB:refines-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552810776263_894029_14121", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "IREB:refines-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810644650_650036_14079", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552811141795_384989_14263", + "@type": "IREB:refines", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "IREB:refines-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552810948738_707540_14217", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "IREB:refines-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810644650_650036_14079", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552813438857_436917_15337", + "@type": "IREB:refines", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "IREB:refines-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552812370943_152244_14924", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "IREB:refines-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810644650_650036_14079", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552813334959_22842_15317", + "@type": "IREB:refines", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "IREB:refines-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552813199775_830344_15281", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "IREB:refines-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810644650_650036_14079", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552813433937_279860_15327", + "@type": "IREB:refines", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "IREB:refines-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552812437056_257578_14975", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "IREB:refines-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810644650_650036_14079", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552811136575_459751_14253", + "@type": "IREB:refines", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "IREB:refines-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552810869277_586147_14175", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "IREB:refines-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810644650_650036_14079", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552813795106_879353_15508", + "@type": "oslc_rm:satisfies", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "oslc_rm:satisfies-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552812805784_548404_15062", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "oslc_rm:satisfies-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810869277_586147_14175", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552813870706_981259_15588", + "@type": "oslc_rm:satisfies", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "oslc_rm:satisfies-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552812663506_709974_15011", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "oslc_rm:satisfies-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810776263_894029_14121", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552815653359_771130_16352", + "@type": "sysml:Allocate", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "sysml:Allocate-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552814523707_628151_15988", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "sysml:Allocate-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552814104357_719492_15607", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552815590348_672436_16293", + "@type": "sysml:Allocate", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "sysml:Allocate-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552814266523_206006_15821", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "sysml:Allocate-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811510062_903764_14503", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_e40094_1718632549973_831908_14172", + "@type": "sysml:Allocate", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "sysml:Allocate-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552815791106_548984_16360", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "sysml:Allocate-toTarget": [ + { + "@id": "d:_19_0_3_e40094_1718632293724_754873_14112", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552815541056_996851_16231", + "@type": "sysml:Allocate", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "sysml:Allocate-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552814246502_629251_15775", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "sysml:Allocate-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552811510062_903764_14503", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_18_5_3_bc402f4_1552813818846_218375_15548", + "@type": "oslc_rm:satisfies", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "oslc_rm:satisfies-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552813038602_222864_15129", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "oslc_rm:satisfies-toTarget": [ + { + "@id": "d:_18_5_3_bc402f4_1552810948738_707540_14217", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:_19_0_3_e40094_1718632569345_311906_14190", + "@type": "sysml:Allocate", + "dcterms:modified": "2025-09-24T08:28:08.223Z", + "pig:itemType": { + "@id": "pig:aRelationship" + }, + "sysml:Allocate-toSource": [ + { + "@id": "d:_18_5_3_bc402f4_1552814266523_206006_15821", + "pig:itemType": { + "@id": "pig:aSourceLink" + } + } + ], + "sysml:Allocate-toTarget": [ + { + "@id": "d:_19_0_3_e40094_1718632293724_754873_14112", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:HierarchyRoot-P-eee_1045467100313_135436_1", + "@type": "pig:HierarchyRoot", + "pig:itemType": { + "@id": "pig:anEntity" + }, + "dcterms:modified": "2026-01-17T22:38:55.908Z", + "dcterms:title": [ + { + "@value": "Hierarchy Root" + } + ], + "dcterms:description": [ + { + "@value": "... anchoring all hierarchies of this graph (package)" + } + ], + "pig:lists": [ + { + "@id": "d:HR-9052885961", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:HR-FolderGlossary-10391243923", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:eee_1045467100313_135436_1", + "@type": "pig:Outline", + "pig:revision": "rev-10410861023", + "dcterms:modified": "2025-11-12T09:27:42.126Z", + "dcterms:title": [ + { + "@value": "Small Autonomous Vehicle" + } + ], + "pig:category": [ + { + "@value": "uml:Model", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + }, + "pig:lists": [ + { + "@id": "d:_19_0_3_71e0233_1746001337727_31616_14119", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746001480225_327746_14120", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746001561119_779379_14121", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:HR-9052885961", + "@type": "pig:Outline", + "dcterms:modified": "2026-01-17T22:38:55.793Z", + "dcterms:title": [ + { + "@value": "Small Autonomous Vehicle" + } + ], + "dcterms:description": [ + { + "@value": "A set of SpecIF Classes derived from a SpecIF Ontology for the domains SpecIF:DomainBase, SpecIF:DomainSystemsEngineering, SpecIF:DomainSystemModelIntegration.", + "@language": "en" + } + ], + "pig:category": [ + { + "@value": "ReqIF:HierarchyRoot", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + }, + "pig:lists": [ + { + "@id": "d:eee_1045467100313_135436_1", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:FolderGlossary-10391243923", + "@type": "pig:Outline", + "dcterms:modified": "2026-01-17T22:38:43.273Z", + "dcterms:title": [ + { + "@value": "Model Elements (Glossary)" + } + ], + "pig:category": [ + { + "@value": "SpecIF:Glossary", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + }, + "pig:lists": [ + { + "@id": "d:_18_5_3_bc402f4_1552814266523_206006_15821", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811469014_293642_14411", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813556602_820961_15353", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814523707_628151_15988", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811454014_108965_14365", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_bc402f4_1604360793737_196507_13523", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028884803_562591_15054", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814104357_719492_15607", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027630942_863638_14801", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027804266_719052_14896", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027847324_539644_14916", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811510062_903764_14503", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_e40094_1718632293724_754873_14112", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811937697_690731_14862", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028954791_356054_15062", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027631039_116153_14834", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027731735_863978_14871", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027837044_867827_14913", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027631056_691503_14836", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812805784_548404_15062", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027882482_912182_14918", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028073773_979720_14974", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028822501_191804_15047", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028827712_739888_15050", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028275862_880382_14999", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028149871_266697_14985", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028899054_101006_15058", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811412605_640145_14319", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812437056_257578_14975", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812370943_152244_14924", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552812663506_709974_15011", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029024681_691401_15066", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027747207_605800_14880", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028061993_960870_14971", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810776263_894029_14121", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029056197_950529_15073", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813199775_830344_15281", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027631053_836894_14835", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028442990_717820_15013", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027704287_746273_14855", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029726958_589946_15078", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810869277_586147_14175", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810948738_707540_14217", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552813038602_222864_15129", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814246502_629251_15775", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552815791106_548984_16360", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814194319_862392_15683", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552814212889_663150_15729", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028605370_466818_15028", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746029049431_401220_15072", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028839192_503107_15053", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028508430_363448_15020", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028118776_36360_14979", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811538626_715866_14549", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552811554859_819240_14595", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028540160_854095_15021", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028483612_410592_15014", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552827771600_60767_16481", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1552810644650_650036_14079", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1556615212765_548060_15021", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_18_5_3_bc402f4_1556615164506_303870_14975", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028282302_943711_15000", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028195311_519257_14989", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028313498_548385_15007", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028216231_986687_14993", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027967661_707482_14950", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028306923_558192_15006", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027920180_215768_14934", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746028183413_413266_14988", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027630942_464786_14802", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + }, + { + "@id": "d:_19_0_3_71e0233_1746027731735_371186_14872", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + }, + { + "@id": "d:HR-FolderGlossary-10391243923", + "@type": "pig:Outline", + "dcterms:modified": "2026-01-17T22:38:55.793Z", + "dcterms:title": [ + { + "@value": "Small Autonomous Vehicle" + } + ], + "dcterms:description": [ + { + "@value": "A set of SpecIF Classes derived from a SpecIF Ontology for the domains SpecIF:DomainBase, SpecIF:DomainSystemsEngineering, SpecIF:DomainSystemModelIntegration.", + "@language": "en" + } + ], + "pig:category": [ + { + "@value": "ReqIF:HierarchyRoot", + "pig:itemType": { + "@id": "pig:aProperty" + } + } + ], + "pig:itemType": { + "@id": "pig:anEntity" + }, + "pig:lists": [ + { + "@id": "d:FolderGlossary-10391243923", + "pig:itemType": { + "@id": "pig:aTargetLink" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/data/XML/21/Project 'Very Simple Model (FMC) with Requirements'.pig.xml b/tests/data/XML/21/Project 'Very Simple Model (FMC) with Requirements'.pig.xml index 6782008..07372ef 100644 --- a/tests/data/XML/21/Project 'Very Simple Model (FMC) with Requirements'.pig.xml +++ b/tests/data/XML/21/Project 'Very Simple Model (FMC) with Requirements'.pig.xml @@ -90,7 +90,7 @@ - dcterms:type + pig:Property has category Specifies a category for an element (entity, relationship or organizer). From a1b34f0ea2b0ea7671bcde7bdc8f6010f08f6a06 Mon Sep 17 00:00:00 2001 From: "OD-T14S-25\\PCUser" Date: Mon, 2 Feb 2026 14:53:17 +0100 Subject: [PATCH 09/11] editorial changes in comments --- src/utils/import/jsonld/import-package-jsonld.ts | 2 +- src/utils/import/xml/import-package-xml.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/import/jsonld/import-package-jsonld.ts b/src/utils/import/jsonld/import-package-jsonld.ts index 52169d3..92eabb3 100644 --- a/src/utils/import/jsonld/import-package-jsonld.ts +++ b/src/utils/import/jsonld/import-package-jsonld.ts @@ -54,7 +54,7 @@ export async function importJSONLD(source: string | File | Blob): Promise } // Instantiate APackage and load the document - const aPackage = new APackage().setJSONLD(doc); // apply all constraints checks by default + const aPackage = new APackage().setJSONLD(doc); // apply all constraint checks by default /* const aPackage = new APackage().setJSONLD( doc, // some examples are incomplete, so we skip the tests for specializes: diff --git a/src/utils/import/xml/import-package-xml.ts b/src/utils/import/xml/import-package-xml.ts index fcd0189..cd8cbaf 100644 --- a/src/utils/import/xml/import-package-xml.ts +++ b/src/utils/import/xml/import-package-xml.ts @@ -63,7 +63,7 @@ export async function importXML(source: string | File | Blob): Promise { */ // Instantiate APackage directly from XML string - const aPackage = new APackage().setXML(xmlString); // apply all constraints checks by default + const aPackage = new APackage().setXML(xmlString); // apply all constraint checks by default /* const aPackage = new APackage().setXML( xmlString, // some examples are incomplete, so we skip the tests for specializes: From 5db5e199e15395880d94a3c01092ddcb9b1d8a6b Mon Sep 17 00:00:00 2001 From: "OD-T14S-25\\PCUser" Date: Mon, 2 Feb 2026 14:56:58 +0100 Subject: [PATCH 10/11] removed debug logging and redundant check in aPackage.validate(). --- src/utils/schemas/pig/ts/pig-metaclasses.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/utils/schemas/pig/ts/pig-metaclasses.ts b/src/utils/schemas/pig/ts/pig-metaclasses.ts index ff375aa..62769c5 100644 --- a/src/utils/schemas/pig/ts/pig-metaclasses.ts +++ b/src/utils/schemas/pig/ts/pig-metaclasses.ts @@ -1064,7 +1064,7 @@ export class APackage extends Identifiable implements IAPackage { validate(itm: IAPackage, checks?: ConstraintCheckType[] ): IRsp { // Schema validation (AJV) - provides structural checks and reuses the idString definition // ... only at the lowest subclass level: - logger.debug('APackage.validate: ', itm); + // logger.debug('APackage.validate: ', itm); try { const ok = SCH.validateAPackageSchema(itm); if (!ok) { @@ -1075,11 +1075,12 @@ export class APackage extends Identifiable implements IAPackage { return Msg.create(682, 'aRelationship', itm.id, err?.message ?? String(err)); } + /* checked by schema .. // graph must be present and be an array if (!Array.isArray(itm.graph) || itm.graph.length < 1) { return Msg.create(630, 'graph'); } - + */ // Call parent validation let rsp = super.validate(itm); if (!rsp.ok) { From 2c57a2c7436522be4da30ff7839b44c1ea4865cb Mon Sep 17 00:00:00 2001 From: "OD-T14S-25\\PCUser" Date: Tue, 3 Feb 2026 09:36:53 +0100 Subject: [PATCH 11/11] Changes as suggested by Chrie' review. --- .../schemas/pig/ts/pig-package-constraints.ts | 102 ------------------ 1 file changed, 102 deletions(-) diff --git a/src/utils/schemas/pig/ts/pig-package-constraints.ts b/src/utils/schemas/pig/ts/pig-package-constraints.ts index 5abf165..b181dd0 100644 --- a/src/utils/schemas/pig/ts/pig-package-constraints.ts +++ b/src/utils/schemas/pig/ts/pig-package-constraints.ts @@ -161,57 +161,6 @@ export function checkConstraintsForPackage( return rspOK; } -/** - * Check cross-item constraints for a package - * @param pkg - Package to validate - * @returns IRsp (rspOK on success, error IRsp on failure) - * -export function checkConstraintsForPackage(pkg: IAPackage): IRsp { - // 1. Check that all primary IDs are unique - const uniquenessCheck = checkUniqueIds(pkg); - if (!uniquenessCheck.ok) { - return uniquenessCheck; - } - - // 2. Build a map of itemTypes by ID for quick lookup - const itemTypeMap = buildItemTypeMap(pkg); - // if (pkg.id == 'd:test-invalid-prop') - // logger.debug(`checkConstraintsForPackage (1): `, pkg, itemTypeMap); - - // 3. Check aProperty.hasClass references - const propertyCheck = checkPropertyReferences(pkg, itemTypeMap); - if (!propertyCheck.ok) { - return propertyCheck; - } - - // 4. Check aLink.hasClass references (aSourceLink and aTargetLink) - const linkCheck = checkLinkReferences(pkg, itemTypeMap); - if (!linkCheck.ok) { - return linkCheck; - } - - // 5. Check anEntity.hasClass and aRelationship.hasClass references - const classCheck = checkEntityAndRelationshipReferences(pkg, itemTypeMap, 'hasClass'); - if (!classCheck.ok) { - return classCheck; - } - - // 6. Check Entity.specializes and Relationship.specializes references - const specializesCheck = checkEntityAndRelationshipReferences(pkg, itemTypeMap, 'specializes'); - if (!specializesCheck.ok) { - return specializesCheck; - } - - // 7. Check Property.specializes and Link.specializes references - const propertyLinkSpecializesCheck = checkPropertyAndLinkReferences(pkg, itemTypeMap, 'specializes'); - if (!propertyLinkSpecializesCheck.ok) { - return propertyLinkSpecializesCheck; - } - - // logger.debug(`Package ${pkg.id || 'unnamed'}: all constraints validated successfully`); - return rspOK; -}*/ - /** * Check that all primary IDs in the package are unique; * validates both '@id' and 'id' fields. @@ -489,57 +438,6 @@ function checkEntityOrRelationshipReferences( } } - /* - const contextName = isHasClass ? 'hasClass' : 'specializes'; - // Check Entity items (both anEntity for hasClass, and Entity for specializes) - const isEntityInstance = iType === PigItemType.anEntity; - const isEntityClass = iType === PigItemType.Entity; - - if ((isHasClass && isEntityInstance) || (!isHasClass && isEntityClass)) { - const entity = item as any; - const referenceValue = entity[referenceType]; - - if (!referenceValue) { - // specializes is optional (can inherit from pig:Entity directly) - if (!isHasClass) { - continue; - } - return Msg.create(674, iId, i, contextName, `missing ${contextName}`); - } - - const targetType = itemTypeMap.get(referenceValue); - if (!targetType) { - return Msg.create(675, iId, i, contextName, referenceValue, 'not found in package'); - } - if (targetType !== PigItemType.Entity) { - return Msg.create(675, iId, i, contextName, referenceValue, `expected pig:Entity, found ${targetType}`); - } - } - - // Check Relationship items (both aRelationship for hasClass, and Relationship for specializes) - const isRelationshipInstance = iType === PigItemType.aRelationship; - const isRelationshipClass = iType === PigItemType.Relationship; - - if ((isHasClass && isRelationshipInstance) || (!isHasClass && isRelationshipClass)) { - const rel = item as any; - const referenceValue = rel[referenceType]; - - if (!referenceValue) { - // specializes is optional (can inherit from pig:Relationship directly) - if (!isHasClass) { - continue; - } - return Msg.create(674, iId, i, contextName, `missing ${contextName}`); - } - - const targetType = itemTypeMap.get(referenceValue); - if (!targetType) { - return Msg.create(675, iId, i, contextName, referenceValue, 'not found in package'); - } - if (targetType !== PigItemType.Relationship) { - return Msg.create(675, iId, i, contextName, referenceValue, `expected pig:Relationship, found ${targetType}`); - } - } */ } return rspOK;