【问题标题】:GraphDB can not infer class of individualGraphDB 无法推断个体的类别
【发布时间】:2019-09-20 15:29:58
【问题描述】:

有一个类 MotionPoint 等价于(Protege 语法)

(geosparql:asWKT exactly 1 rdfs:Literal)
and (:hasSpeed exactly 1 rdfs:Literal)
and (:hasTimestamp exactly 1 rdfs:Literal)
and (:locatedInRoadElement exactly 1 otn:Road_Element)

还有一个子类 OverspeedingMotionPoint 等价于

:MotionPoint
 and (:overspeedingByValue exactly 1 rdfs:Literal)

因此,让个体 X 成为猫头鹰:与 MotionPoint 定义 Protege Pellet 推理器中的关系的事物推断 X 是 MotionPoint。

向 X 添加 overspeedingByValue 关系使 Pellet 推断 X 是 OverspeedingMotionPoint。

最后,我把这个本体导入GraphDB,选择OWL2-RL规则集,但不能得出X是OverspeedingMotionPoint的结论,它说X只是MotionPoint。

请帮助我理解我做错了什么..

【问题讨论】:

  • 精确卡。限制根本不是 OWL2 RL 配置文件的一部分,对于等效的类公理,它甚至更多地仅限于值限制 - 所以我怀疑这会起作用。我什至想知道为什么会推断出(x rdf:type :Motion)。请查看 OWL 文档可以做什么和不能做什么:w3.org/TR/owl2-profiles/#Class_Expressions_3
  • 是的,你的怀疑是对的(X 是一个 :MotionPoint)。这是因为 domain(:locatedInRoadElement) 是 :MotionPoint),抱歉。
  • 好的,是的。然后我的回答是,OWL2 RL 不支持您的功能。你可以试试owl-max,它支持更多功能

标签: owl graphdb reasoning


【解决方案1】:

我认为您要求的是 OWL DL。 GraphDB 不支持 DL,它支持 RL 和 QL。

如果您的(某些)道具在每个类中都是唯一的,那么您可以使用 RDFS 推理轻松推断类型,例如:

:MotionPoint a rdfs:Class;
  rdfs:subClassOf geo:Geometry.
:OverspeedingMotionPoint a rdfs:Class;
  rdfs:subClassOf :MotionPoint.

# geo:asWKT is subprop of geo:hasSerialization attached to geo:Geometry,
#  so is inherited by :MotionPoint
:hasSpeed a owl:DatatypeProperty;
  rdfs:domain :MotionPoint; rdfs:range xsd:decimal.
:overspeedingByValue a owl:DatatypeProperty;
  rdfs:domain :OverspeedingMotionPoint; rdfs:range xsd:decimal.
:hasTimestamp a owl:DatatypeProperty;
  rdfs:domain :MotionPoint; rdfs:range xsd:dateTimeStamp.
:locatedInRoadElement a owl:ObjectProperty;
  rdfs:domain :MotionPoint; rdfs:range :RoadElement.

如果你所有的 props 都附加到多个类:在记录实例时断言类型会不会太麻烦?

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多