Pattern读取说明

这篇博客探讨了在推理过程中如何处理Event类型的实例A、B和C,以及它们的5个子实例A1A2A3B1B2。文章指出,虽然这些子实例是父实例的子类,但理想情况下项目需要直接接触子实例进行分解工作,目前存在的问题是关系信息封装在子实例中,这是一个待解决的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比如说,推理后出现这种情况:

  <rdf:Description rdf:about="test:eg#fb1">
    <val2 rdf:resource="test:eg#B"/>
    <val1 rdf:resource="test:eg#A"/>
    <rdf:type rdf:resource="test:eg#followBy"/>
    <val1 rdf:resource="test:eg#C"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <owl:sameAs rdf:resource="test:eg#fb1"/>
  </rdf:Description>

本身只想读取一个val1,结果出现两个,这是因为 C owl:sameAs A 因此读取后将C作为一个属性添加进fb1了,先从头说起吧。

首先推理的进入点应该是:

  <rdf:Description rdf:about="test:eg#p1">
    <hasVal rdf:resource="test:eg#every1"/>
    <rdf:type rdf:resource="test:eg#Pattern"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <owl:sameAs rdf:resource="test:eg#p1"/>
  </rdf:Description>

从这个入口,应该可以找到p1,再从p1开始去寻找every1,话说回来,owl推理后每一个元素都有owl:sameAs自身,很烦啊,因为并不需要这个玩意,今后要想办法把这个东西去掉。找到的every1是:

  <rdf:Description rdf:about="test:eg#every1">
    <hasVal rdf:resource="test:eg#fb1"/>
    <rdf:type rdf:resource="test:eg#Every"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <owl:sameAs rdf:resource="test:eg#every1"/>
  </rdf:Description>

可见every1中hasVal属性含有fb1这一实例,因此去到fb1:

  <rdf:Description rdf:about="test:eg#fb1">
    <val2 rdf:resource="test:eg#B"/>
    <val1 rdf:resource="test:eg#A"/>
    <rdf:type rdf:resource="test:eg#followBy"/>
    <val1 rdf:resource="test:eg#C"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <owl:sameAs rdf:resource="test:eg#fb1"/>
  </rdf:Description>

这里便遇到双重val1了,因此应该设一个判断,当遇到双重val值的时候应该立马分开pattern为两个,或者说分开sparql的返回值也行。

再往下观察A、B和C三个实例:

  <rdf:Description rdf:about="test:eg#A">
    <owl:equivalentClass rdf:resource="test:eg#A"/>
    <owl:sameAs rdf:resource="test:eg#A"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <owl:sameAs rdf:resource="test:eg#C"/>
    <rdf:type rdf:resource="test:eg#Event"/>
    <rdfs:subClassOf rdf:resource="test:eg#A"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <owl:equivalentClass rdf:resource="test:eg#C"/>
    <rdfs:subClassOf rdf:resource="test:eg#C"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
  </rdf:Description>

  <rdf:Description rdf:about="test:eg#B">
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdf:type rdf:resource="test:eg#Event"/>
    <rdfs:subClassOf rdf:resource="test:eg#B"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    <owl:sameAs rdf:resource="test:eg#B"/>
    <owl:equivalentClass rdf:resource="test:eg#B"/>
  </rdf:Description>

  <rdf:Description rdf:about="test:eg#C">
    <owl:sameAs rdf:resource="test:eg#C"/>
    <owl:sameAs rdf:resource="test:eg#A"/>
    <rdf:type rdf:resource="test:eg#Event"/>
    <owl:equivalentClass rdf:resource="test:eg#A"/>
    <owl:equivalentClass rdf:resource="test:eg#C"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
    <rdfs:subClassOf rdf:resource="test:eg#A"/>
    <rdfs:subClassOf rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
    <rdfs:subClassOf rdf:resource="test:eg#C"/>
  </rdf:Description>

这里因为A、B和C都是Event类型了,因此可以从这里开始对pattern进行封装了,但是现在还有个问题,就是这三个实例其实是总实例,下面还有5个子实例,A1A2A3B1B2

这5个,但是由于这5个子实例是subClassOf A或是B的,这就导致关系信息时封装在子实例中的,但对于项目来说在这一层最好能够直接接触到子实例便可以直接进行分解的封装工作,这个问题下一步解决。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值