【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统

讲两句

现在基本上网上很少有知识图谱完整案例的构建,咱们开发者对于怎么构建没有一点思路,知识图谱基本就两个构建方法:方法1 neo4j图数据库; 方法2 echarts图谱插件。 我觉得方法2比较简单,主要省事。
下面带领大家进入中药可视化知识图谱的构建环节,带领大家熟悉如何开发知识图谱,免费分享技术知识

如何开发知识图谱

用户信息管理:新用户注册,已有账号再登录,用户注销,用户信息修改。
2. 中药材信息查询:用户可以点击系统给出的或按编码或按药性等条件进行查询,或通过搜索框自主输入想要查询的信息进行中药材查询。
3. 中药材资讯社区:进入后首页顶部有推荐咨询可供浏览,依靠基于内容的推荐算法(即基于用户与标的物的相关信息以及用户对标的物的操作行为来构成推荐算法模型为用户提供推荐服务)实现实时咨询推荐。推荐底下是最新审核并通过的资讯按发布时间进行排位。点击进入资讯后可以关注资讯的作者、点赞或收藏资讯。在资讯底部可以进行评论、回复和点赞评论。第二页是用户的消息与评论管理,可以接收系统消息、回复他人的评论以及删除自己的评论。最后一页是资讯发布及删除,用户可以利用图文与视频编辑自己的文章然后送审,经管理员审核通过即可成功发布。无论发布成功与否用户都可以选择删除自己所发布的文章。
4. 中药材产地可视化:内含全国省份的中药材种类分布地图(类似疫情地图),用户可以点击省份可查看该省份的药材种类数量及详情跳转;以及全国各省中药材种类分布的统计饼图、直方图;跳转详情页后可点击省份内不同地区查看药材产出种类详情。倘若信息出现错误,用户可以向后台管理员发送纠错申请。
【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第1张图片
管理员信息管理:管理员登录,用户注销,管理员的个人信息修改。
2. 用户信息管理:管理员可对用户信息进行查询,可以修改和重置用户的密码(初始密码默认为123456),也可以注销用户。
3. 中药材信息管理:管理员可以点击搜索框自主输入查询,也可以对中药材信息进行增删改等操作。
4. 中药材资讯社区管理:管理员可以进行中药材资讯发布;负责用户的文章审核,只有通过审核的用户文章才能成功发布;管理员还可以查看一系列的资讯统计,对资讯进行查询和删除。
5. 中药材产地可视化:管理员除了基本的浏览以外,还拥有地图和图表的信息管理权限,可以审核和处理用户的纠错申请,以此对一些数据信息进行修改。
【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第2张图片

知识图谱构建技术

  • 可视化门户网站 (Vue + Bootstrap)
  • 管理后台网站(Vue + ElementUI)
  • 服务端(Springboot + Mybatis)

服务端一个后台可以拖两个前端,前端的端口是不同的,可以同时启动

关键技术

关系图和药材地图都采用了Apache Echarts 5中的组件,进行了一定封装

  • 产地地图支持到县级的下钻

注意点

  • 药材的产地可以录入,录入后需要在产地管理中点击刷新按钮,刷新之后,数据会更新,再查询就会在地图上显示
  • 关系图谱来源于药方,只要添加了药方,并且药方中的药材在系统里已经添加了,就会自动绘制,节点大小和位置是随机的

开发过程分享

【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第3张图片
【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第4张图片
【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第5张图片
【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第6张图片
【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第7张图片
【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第8张图片
【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第9张图片
【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第10张图片
【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第11张图片

【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第12张图片
实现代码如下:

package com.university.demo.controller;



import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.university.demo.common.ServerResponse;
import com.university.demo.common.UserLoginToken;
import com.university.demo.entity.Admin;
import com.university.demo.entity.request.PasswordVO;
import com.university.demo.entity.request.UserLoginRequest;
import com.university.demo.service.AdminService;
import com.university.demo.service.impl.TokenService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

/**
 * @author lequal
 * @since 2020-03-06
 */
@RestController
@RequestMapping("/admin")
public class AdminController {

    @Autowired
    private AdminService adminService;
    @Autowired
    private TokenService tokenService;

    /**
     * 管理员登录
     * @param adminLoginRequest
     * @return
     */
    //@SysLog("测试")
    @PostMapping("/login")
    public ServerResponse login(@RequestBody UserLoginRequest adminLoginRequest) throws Exception{
        Map<String, Object> map = new HashMap();
        Admin admin = adminService.adminLogin(adminLoginRequest.getUsername(), adminLoginRequest.getPassword());
        if (admin != null){
            String token = tokenService.getToken(admin);
            admin.setToken(token);
            adminService.saveOrUpdate(admin);
            map.put("admin", admin);
            map.put("token", token);
            return ServerResponse.ofSuccess(map);
        }
        return ServerResponse.ofError("用户名或密码错误!");
    }

    @PostMapping("/logout")
    public ServerResponse logout(@RequestBody UserLoginRequest request) {
        Map<String, Object> map = new HashMap();
        Integer ret = adminService.adminLogout(request.getToken());
        System.out.println("ret==>" + ret);
        return ServerResponse.ofSuccess("注销成功");
    }

    @GetMapping("/info")
    public ServerResponse info(@RequestParam String token) {
        Map<String, Object> map = new HashMap();
        Admin admin = adminService.info(token);
        if (admin != null){
            map.put("userinfo", admin);
            return ServerResponse.ofSuccess(map);
        }
        return ServerResponse.ofError("token无效!");
    }
    /**
     * 管理员更新个人资料
     * @return
     */
    //@UserLoginToken
    @PostMapping("/modify")
    public ServerResponse modify(@RequestBody Admin admin) {
        return adminService.updateById(admin) ? ServerResponse.ofSuccess("更新成功!") : ServerResponse.ofError("更新失败!");
    }

    /**
     * 根据ID查询管理员信息
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public ServerResponse queryAdmin(@PathVariable("id") Integer id) {
        return ServerResponse.ofSuccess(adminService.getById(id));
    }


    /**
     * 管理员修改密码
     * @param passwordVO
     * @return
     */
    @PostMapping("/password")
    public ServerResponse updatePass(@RequestBody PasswordVO passwordVO) {
        System.out.println(passwordVO + "======");
        QueryWrapper<Admin> wrapper = new QueryWrapper();
        wrapper.eq("id", passwordVO.getId());
        wrapper.eq("password", passwordVO.getOldPass());
        Admin admin = adminService.getOne(wrapper);
        if (admin == null) {
            return ServerResponse.ofError("旧密码错误");
        }
        // 否则进入修改密码流程
        admin.setPassword(passwordVO.getNewPass());
        boolean b = adminService.updateById(admin);
        if (b) {
            return ServerResponse.ofSuccess("密码修改成功");
        }
        return ServerResponse.ofError("密码更新失败");
    }


}


【技术免费分享-知识图谱的构建】SpringBoot+Vue.js知识图谱中药可视化系统_第13张图片

实现代码如下:

'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"'
})

技术总结

关于知识图谱,经过现在分析,大家应该都能开发了,我的目的就是帮助大家学会springboot+vue.js组合开发知识图谱,奥利给,未来可期

你可能感兴趣的:(spring,boot,elementui,vue.js,mysql,知识图谱)