def getEntity(): entity = request.form.get('entityUri', '') if entity: entityDict = ontologyStructureModel.Entity(entity).toDict() return json.dumps(entityDict) return ''
def constructMetaModel(self): allObjectsAndRelations = self.ir.getAllObjectsAndRelations() es = ontologyStructureModel.EntityStructure() entityToUriMap = {} for item in allObjectsAndRelations: e1 = ontologyStructureModel.Entity(item[0]) e2 = ontologyStructureModel.Entity(item[2]) es.addEntity(e1) es.addEntity(e2) entityToUriMap[explanationHelper.getNameFromUri(item[0])] = e1 entityToUriMap[explanationHelper.getNameFromUri(item[2])] = e2 es.addRelation(item[1], item[0], item[2]) duplicates = {} for item in es.entities: if not explanationHelper.getNameFromUri(item.uri) in list(duplicates.keys()): duplicates[explanationHelper.getNameFromUri(item.uri)] = 1 else: print('We got a duplicate key!') break print(duplicates) types = set() for item in es.entities: types.add(item.type) types = list(types) print('Types:') print(types) def getEntityType(entityUri): return entityToUriMap[explanationHelper.getNameFromUri(entityUri)].type typeRelations = [] for item in es.relations: typeRelations.append({'name': item.name, 'source': getEntityType(item.source), 'target': getEntityType(item.target)}) typeRelations = [dict(s) for s in set(frozenset(d.items()) for d in typeRelations)] print('Type relations:') print(typeRelations) typesAndRelations = {'types': types, 'relations': typeRelations} with open('C:/Users/SAMSUNG/Documents/ThesisProject/MasterThesisCode/Master-Thesis---OD3/Presentation/FlaskServer/static/ontologyRelations.js', 'w') as f: f.write(json.dumps(typesAndRelations))
def generatePopupFigureDescription(self, figureUri): figureEntity = ontologyStructureModel.Entity(figureUri) template = explanationHelper.openText( 'static/explanationTemplates/FigureSummary.txt') relatedEntityUris = [ ontologyStructureModel.Entity(entity[1]) for entity in self.informationRetriever.getRelations( figureUri, self.baseUri + 'models') ] summary = template.format( classes=self.classesToText(relatedEntityUris)) question = {'sub': 'View diagrams', 'orginial': ''} figureid = 'popup_' + explanationHelper.diagramUriToFileName( explanationHelper.getNameFromUri(figureUri)) figuretitle = explanationHelper.getNameOfEntity(figureEntity) figureSummary = '' entityid = 'popup_entity_overview_' + explanationHelper.diagramUriToFileName( explanationHelper.getNameFromUri(figureUri)) entitySummary = '' relatedEntities = relatedEntityUris figureSection = sectionModel.Section( figureid, figuretitle, figureSummary, priority=5, sectionTextContent=[ (explanationHelper.getNameFromUri(content[0]), content[1]) for content in figureEntity.dataTypeProperties ]) entitySection = self.createSection(relatedEntities, entityid, 'Entities related to diagram', entitySummary) template = sectionModel.Template(question, summary) template.addSection(figureSection.toDict()) template.addSection(entitySection.toDict()) return template
def getRelations(): subject = request.form.get('subjectUri', '') relationType = request.form.get('relationUri', '') objectType = request.form.get('objectTypeUri', '') if subject: relations = [{ 'relationUri': pair[0], 'entity': ontologyStructureModel.Entity(pair[1]).toDict() } for pair in queryManager.getRelations( subject, relationType, objectType)] return json.dumps(relations) return ''
def popup_patternImplementation(): patternUri = request.form.get('pattern', '') newWindowPath = request.form.get('newWindowPath', '') pattern = ontologyStructureModel.Entity(patternUri) overviewStructure = explanationGenerator.getOverviewPatternArchitecture( patternUri) physicalStructure = explanationGenerator.getFullPhyPatternArchitecture( patternUri) developmentStructure = explanationGenerator.getFullDevPatternArchitecture( patternUri) allEntities = overviewStructure.entities + physicalStructure.entities + developmentStructure.entities side_bar_diagram_file_paths = { diagram: 'static/images/' + explanationHelper.diagramUriToFileName(diagram) + '.png' for entity in allEntities for diagram in set(entity.diagrams) } explanation = {} explanation['popup_overview_pattern'] = { 'description': explanationTemplates.generateSystemPatternsOverviewSummary( overviewStructure, pattern), 'newWindowPath': newWindowPath } explanation['popup_physical_pattern'] = { 'description': explanationTemplates.generateSpecificSystemPatternsDetailedSummary( physicalStructure, pattern), 'newWindowPath': newWindowPath } explanation['popup_development_pattern'] = { 'description': explanationTemplates.generateSpecificSystemPatternsDetailedSummary( developmentStructure, pattern), 'newWindowPath': newWindowPath } return render_template( 'popupInteractiveDiagram.html', side_bar_diagram_file_paths=side_bar_diagram_file_paths, explanations=explanation, newWindowPath=newWindowPath)
def generatePatternFeatureImplementationSummary(self, mainEntityUri, structure): mainEntity = ontologyStructureModel.Entity(mainEntityUri) impl = list( filter(lambda e: e.type == self.baseUri + 'ImplementationClass', structure.entities)) role = list( filter(lambda e: e.type == self.baseUri + 'Role', structure.entities)) arch = list( filter(lambda e: e.type == self.baseUri + 'ArchitecturalPattern', structure.entities)) developmentClasses = list( filter(lambda e: self.baseUri + 'DevelopmentClass' in e.supertypes, structure.entities)) developmentClassPackages = list( filter( lambda e: self.baseUri + 'DevelopmentClassPackage' in e. supertypes, structure.entities)) developmentPackages = list( filter( lambda e: self.baseUri + 'DevelopmentPackage' in e.supertypes, structure.entities)) template = explanationHelper.openText( 'static/explanationTemplates/PatternViewImplementation.txt') summary = template.format( impl_class=self.styledName('Implementation classes', 'class-font', self.baseUri + 'ImplementationClass'), arch_patt=self.styledName('Architectural patterns', 'class-font', self.baseUri + 'ArchitecturalPattern'), path_inbetween=self.classesToText(structure.entities)) question = self.getQuestion(summary) sectionImplOverview = '' sectionImplOverview = sectionImplOverview.format( main_entity=explanationHelper.getNameOfEntity(mainEntity)) expTemplate = sectionModel.Template(question, summary) implSection = self.createSection(impl, 'impl_section', 'Implementation classes', summary=sectionImplOverview, priority=4) if developmentClasses: expTemplate.addSection( self.createSection(developmentClasses, 'developmentClass_section', 'Development classes', summary=self.sectionSummary( developmentClasses[0].type), priority=2).toDict()) if developmentClassPackages: expTemplate.addSection( self.createSection(developmentClassPackages, 'developmentClassPackage_section', 'Development class packages', summary=self.sectionSummary( developmentClassPackages[0].type), priority=2).toDict()) if developmentPackages: expTemplate.addSection( self.createSection(developmentPackages, 'developmentPackage_section', 'Development packages', summary=self.sectionSummary( developmentPackages[0].type), priority=2).toDict()) sectionRoleOverview = '' roleSection = self.createSection(role, 'role_section', 'Roles', summary=sectionRoleOverview, priority=2) sectionArchOverview = '' archSection = self.createSection(arch, 'arch_section', 'Architectural patterns', summary=sectionArchOverview, priority=1) expTemplate.addSection(implSection.toDict()) expTemplate.addSection(roleSection.toDict()) expTemplate.addSection(archSection.toDict()) return expTemplate
def q7(architecturalPattern): fileName = 'q7_' + architecturalPattern if os.path.isfile('static\\saved_data\\' + fileName + '.pkl'): data = loadExplanation(fileName) structure = data['structure'] overviewStructure = structure['overview'] devStructure = structure['development'] phyStructure = structure['physical'] explanation = data['explanation'] overviewExplanation = explanation['overview'] devExplanation = explanation['development'] phyExplanation = explanation['physical'] sideBardiagram_file_paths = data['diagram_paths'] else: structure = {} patternEntity = ontologyStructureModel.Entity(baseUri + architecturalPattern) overviewStructure = structure[ 'overview'] = explanationGenerator.getOverviewPatternArchitecture( baseUri + architecturalPattern) devStructure = structure[ 'development'] = explanationGenerator.getFullDevPatternArchitecture( baseUri + architecturalPattern) phyStructure = structure[ 'physical'] = explanationGenerator.getFullPhyPatternArchitecture( baseUri + architecturalPattern) explanation = {} overviewExplanation = explanation[ 'overview'] = explanationTemplates.generateSystemPatternsOverviewSummary( overviewStructure, patternEntity) devExplanation = explanation[ 'development'] = explanationTemplates.generateSpecificSystemPatternsDetailedSummary( devStructure, patternEntity) phyExplanation = explanation[ 'physical'] = explanationTemplates.generateSpecificSystemPatternsDetailedSummary( phyStructure, patternEntity) allEntities = list( set(phyStructure.entities + devStructure.entities + overviewStructure.entities)) sideBardiagram_file_paths = { diagram: 'static/images/' + explanationHelper.diagramUriToFileName(diagram) + '.png' for entity in allEntities for diagram in set(entity.diagrams) } saveExplanation(fileName, structure, explanation, sideBardiagram_file_paths) return render_template( 'childtemplate.html', diagram_path='static/ClusteringGraph.js', side_bar_diagram_file_paths=sideBardiagram_file_paths, entityData={ 'overview': { 'tab_id': 'overview_view_tab', 'tab_name': 'Overview', 'entity_structure': json.dumps(overviewStructure.toDict()), 'explanation': overviewExplanation }, 'physical': { 'tab_id': 'physical_view_tab', 'tab_name': 'Physical view', 'entity_structure': json.dumps(phyStructure.toDict()), 'explanation': phyExplanation }, 'development': { 'tab_id': 'development_view_tab', 'tab_name': 'Development view', 'entity_structure': json.dumps(devStructure.toDict()), 'explanation': devExplanation }, })