protege构建子平知识图谱本体工程

1 引言

以前用java做了一个程序,写了很多年,根据条件来推断,入下面的代码。但这个代码并没有什么技术含量,体力活。于是想着能不能通过知识图谱的技术来做推断呢?能不能让传统的子平计算机程序再往前走一步。

@Service("日进角合")
public class JinJiaoHeDayService extends AbstractXchhService {


    @Override
    protected List<AssertionDto> hanleCaibo(BaZi bazi, SexEnum sex, SectionEnum section, LiuShiJiaZiEnum dayun, LiuShiJiaZiEnum liunian, Integer age) {
        AssertionDto assertionDto = null;
        List<AssertionDto> assertionDtos = new ArrayList<>();
        BookFactory bookFactory = BookFactory.getInstance();
        if (age>=16){
            assertionDto = AssertionDto.builder()
                    .assertion("此年成立事业必有成就")
                    .reason(String.format("%s日%s流年,进角合", bazi.getDay().display(),liunian.display()))
                    .section(section)
                    .jx(JiXiongEnum.JI).direction(DirectionEnum.ZP)
                    .book(bookFactory.getBook(BookEnum.SJFZXCHHTJ,81))
                    .build();
            assertionDtos.add(assertionDto);
        }
        return assertionDtos;
    }
}

2 本体工程

斯坦福大学到这里面去下载protege这个开源知识图谱编辑和本体工程工具。如何构建子平推理的知识图谱呢,有点犯难,因为没有参考,只能按照自己的理解去设计。

2.1 定义class

   学习过面向对象的工程师,对这个应该容易理解,类是相似实体的抽象。在enties中定义六十甲子、天干、地支三个class

2.2 定义个体实例

        给六十甲子、天干、地支定义个体实例,就是类的实例化。

2.3 定义对象属性

   对象属性是实体与实体时间的关系,因此就就可以推论出,有如下的关系定义。最基础的就是下图描述。因为甲乙丙丁是天干实例,子丑寅卯是地支实例,甲子的天干是甲、地支为子,那么前面定义的实例关系就可以建立了。

有一些关系是相同概念,故而设置Equivation To关系。

2.4 添加关系

在对象属性中把与个体相关的关系建立起来。

2.5 查看关系图

3 sparql查询

   SPARQL是RDF数据库的标准查询语言,上面定义了本体和关系,如何进行查询呢?这里不去讲sparql的基本语法,因为我懒得把基本语法看一遍,实践就可以推理出来了。

   下面是查询某个关系属于哪类子属性,

这是咋知道,为啥这么写呢?rdf设计了一个IRI,同一了标准的资源唯一定位,搞了很长的路径,所以在如果要使用sparql,故而定义了前缀,后面就用缩写就行,否则就写查询语句就很长。

查看保存的rdf文件,就知道了,是咋回事了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

warrah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值