|
|
@ -46,7 +46,7 @@ public class EREDTO {
|
|
|
|
erAttributeDTOS.add(erAttributeDTO);
|
|
|
|
erAttributeDTOS.add(erAttributeDTO);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
EntityExtractionDTO entityExtraction = new EntityExtractionDTO(truncationId,name,type, erAttributeDTOS);
|
|
|
|
EntityExtractionDTO entityExtraction = new EntityExtractionDTO(truncationId,type,name, erAttributeDTOS);
|
|
|
|
entities.add(entityExtraction);
|
|
|
|
entities.add(entityExtraction);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -57,24 +57,25 @@ public class EREDTO {
|
|
|
|
String target = relationJson.getString("target");
|
|
|
|
String target = relationJson.getString("target");
|
|
|
|
String type = relationJson.getString("type");
|
|
|
|
String type = relationJson.getString("type");
|
|
|
|
JSONObject attributes = relationJson.getJSONObject("attributes");
|
|
|
|
JSONObject attributes = relationJson.getJSONObject("attributes");
|
|
|
|
if (CollUtil.isNotEmpty(attributes)){
|
|
|
|
|
|
|
|
List<ERAttributeDTO> erAttributeDTOS = new ArrayList<>();
|
|
|
|
List<ERAttributeDTO> erAttributeDTOS = new ArrayList<>();
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(attributes)){
|
|
|
|
for (String key : attributes.keySet()) {
|
|
|
|
for (String key : attributes.keySet()) {
|
|
|
|
Object value = attributes.get(key);
|
|
|
|
Object value = attributes.get(key);
|
|
|
|
String valueString = attributes.getString(key);
|
|
|
|
String valueString = attributes.getString(key);
|
|
|
|
ERAttributeDTO erAttributeDTO = new ERAttributeDTO(key, valueString, value instanceof Number?"1":"0");
|
|
|
|
ERAttributeDTO erAttributeDTO = new ERAttributeDTO(key, valueString, value instanceof Number?"1":"0");
|
|
|
|
erAttributeDTOS.add(erAttributeDTO);
|
|
|
|
erAttributeDTOS.add(erAttributeDTO);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if (StrUtil.isEmpty(source) || StrUtil.isEmpty(target)){
|
|
|
|
if (StrUtil.isEmpty(source) || StrUtil.isEmpty(target)){
|
|
|
|
log.warn("truncationId:{} relation:{} 关系中source or target is empty",truncationId,relationJson);
|
|
|
|
log.warn("truncationId:{} relation:{} 关系中source or target is empty",truncationId,relationJson);
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Optional<EntityExtractionDTO> sourceTypeOpt = entities.stream().filter(e -> StrUtil.equals(e.getEntity(), source)).findFirst();
|
|
|
|
Optional<EntityExtractionDTO> sourceTypeOpt = entities.stream().filter(e -> StrUtil.equals(e.getName(), source)).findFirst();
|
|
|
|
if (sourceTypeOpt.isEmpty()){
|
|
|
|
if (sourceTypeOpt.isEmpty()){
|
|
|
|
log.warn("truncationId:{} relation:{} 关系中source在实体中不存在",truncationId,relationJson);
|
|
|
|
log.warn("truncationId:{} relation:{} 关系中source在实体中不存在",truncationId,relationJson);
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Optional<EntityExtractionDTO> targetTypeOpt = entities.stream().filter(e -> StrUtil.equals(e.getEntity(), target)).findFirst();
|
|
|
|
Optional<EntityExtractionDTO> targetTypeOpt = entities.stream().filter(e -> StrUtil.equals(e.getName(), target)).findFirst();
|
|
|
|
if (targetTypeOpt.isEmpty()){
|
|
|
|
if (targetTypeOpt.isEmpty()){
|
|
|
|
log.warn("truncationId:{} relation:{} 关系中target在实体中不存在",truncationId,relationJson);
|
|
|
|
log.warn("truncationId:{} relation:{} 关系中target在实体中不存在",truncationId,relationJson);
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
@ -84,7 +85,6 @@ public class EREDTO {
|
|
|
|
relationsList.add(relationExtractionDTO);
|
|
|
|
relationsList.add(relationExtractionDTO);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
eredto.setEntities(entities);
|
|
|
|
eredto.setEntities(entities);
|
|
|
|
eredto.setRelations(relationsList);
|
|
|
|
eredto.setRelations(relationsList);
|
|
|
|
return eredto;
|
|
|
|
return eredto;
|
|
|
@ -107,7 +107,7 @@ public class EREDTO {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
EntityExtractionDTO entityExtractionDTO = new EntityExtractionDTO();
|
|
|
|
EntityExtractionDTO entityExtractionDTO = new EntityExtractionDTO();
|
|
|
|
entityExtractionDTO.setEntity("行");
|
|
|
|
entityExtractionDTO.setEntity("行");
|
|
|
|
entityExtractionDTO.setName("row");
|
|
|
|
entityExtractionDTO.setName("行");
|
|
|
|
entityExtractionDTO.setTruncationId(truncationId);
|
|
|
|
entityExtractionDTO.setTruncationId(truncationId);
|
|
|
|
List<ERAttributeDTO> erAttributeDTOS = new ArrayList<>();
|
|
|
|
List<ERAttributeDTO> erAttributeDTOS = new ArrayList<>();
|
|
|
|
for (Map.Entry<String, Object> tableEntry : tableJson.entrySet()) {
|
|
|
|
for (Map.Entry<String, Object> tableEntry : tableJson.entrySet()) {
|
|
|
@ -131,12 +131,41 @@ public class EREDTO {
|
|
|
|
String entityName = entity.getEntity();
|
|
|
|
String entityName = entity.getEntity();
|
|
|
|
Optional<ChineseEnglishWords> first = wordsList.stream().filter(w -> StrUtil.equals(w.getChineseWord(), entityName)).findFirst();
|
|
|
|
Optional<ChineseEnglishWords> first = wordsList.stream().filter(w -> StrUtil.equals(w.getChineseWord(), entityName)).findFirst();
|
|
|
|
first.ifPresent(chineseEnglishWords -> entity.setEntityEn(chineseEnglishWords.getEnglishWord()));
|
|
|
|
first.ifPresent(chineseEnglishWords -> entity.setEntityEn(chineseEnglishWords.getEnglishWord()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(entity.getAttributes())){
|
|
|
|
|
|
|
|
for (ERAttributeDTO attribute : entity.getAttributes()) {
|
|
|
|
|
|
|
|
setAttributeEn(attribute, wordsList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (RelationExtractionDTO relation : relations) {
|
|
|
|
for (RelationExtractionDTO relation : relations) {
|
|
|
|
String relationName = relation.getRelation();
|
|
|
|
String relationName = relation.getRelation();
|
|
|
|
Optional<ChineseEnglishWords> first = wordsList.stream().filter(w -> StrUtil.equals(w.getChineseWord(), relationName)).findFirst();
|
|
|
|
Optional<ChineseEnglishWords> first = wordsList.stream().filter(w -> StrUtil.equals(w.getChineseWord(), relationName)).findFirst();
|
|
|
|
first.ifPresent(chineseEnglishWords -> relation.setRelationEn(chineseEnglishWords.getEnglishWord()));
|
|
|
|
first.ifPresent(chineseEnglishWords -> relation.setRelationEn(chineseEnglishWords.getEnglishWord()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String sourceType = relation.getSourceType();
|
|
|
|
|
|
|
|
Optional<ChineseEnglishWords> sourceTypeFirst = wordsList.stream().filter(w -> StrUtil.equals(w.getChineseWord(), sourceType)).findFirst();
|
|
|
|
|
|
|
|
sourceTypeFirst.ifPresent(chineseEnglishWords -> relation.setSourceTypeEn(chineseEnglishWords.getEnglishWord()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String targetType = relation.getTargetType();
|
|
|
|
|
|
|
|
Optional<ChineseEnglishWords> targetTypeFirst = wordsList.stream().filter(w -> StrUtil.equals(w.getChineseWord(), targetType)).findFirst();
|
|
|
|
|
|
|
|
targetTypeFirst.ifPresent(chineseEnglishWords -> relation.setTargetTypeEn(chineseEnglishWords.getEnglishWord()));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isNotEmpty(relation.getAttributes())){
|
|
|
|
|
|
|
|
for (ERAttributeDTO attribute : relation.getAttributes()) {
|
|
|
|
|
|
|
|
setAttributeEn(attribute, wordsList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void setAttributeEn(ERAttributeDTO attribute,List<ChineseEnglishWords> wordsList) {
|
|
|
|
|
|
|
|
if (null == attribute || CollUtil.isEmpty(wordsList)){
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
String attributeName = attribute.getAttribute();
|
|
|
|
|
|
|
|
Optional<ChineseEnglishWords> attributeFirst = wordsList.stream().filter(w -> StrUtil.equals(w.getChineseWord(), attributeName)).findFirst();
|
|
|
|
|
|
|
|
attributeFirst.ifPresent(chineseEnglishWords -> attribute.setAttributeEn(chineseEnglishWords.getEnglishWord()));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|