owl:functionalProperty & owl:differentFrom

3

我很希望能得到一些关于一个我认为非常简单的场景的帮助;但是由于我是OWL和GraphDB的新手,可能犯了一些基本错误。

我有一个非常简单的Turtle-specified OWL示例,如下所示:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix demo: <urn:demo> .

demo:Gender a owl:Class .

demo:Male a demo:Gender .
demo:Female a demo:Gender .

demo:Male owl:differentFrom demo:Female .

demo:Person a owl:Class .

demo:hasGender a owl:ObjectProperty, owl:FunctionalProperty;
                rdfs:domain demo:Person;
                rdfs:range demo:Gender .

demo:Per1 a demo:Person;
            demo:hasGender demo:Male;
            demo:hasGender demo:Female .

实际上,我有一个名为Gender的类,并且确定存在两个不同的成员Male和Female。
然后我定义了另一个名为Person的类,它具有一个函数属性hasGender,其范围为Gender。
最后,我断言Person的一个实例,并且也断言它既是Male又是Female。
现在我理解这是一种矛盾;我已经断言hasGender属性是功能性的,因此对于给定的Person,应该只有一个性别。我还断言Male和Female是不同的,因此当我将其导入GraphDB时,我原本以为它会失败。
但是GraphDB很高兴加载这两个断言。我错过了什么吗?

2
这与另一个关于GraphDB不一致性的最近问题有关:https://stackoverflow.com/q/48155441/1260887 - Antoine Zimmermann
1
你忽略了三元存储通常不支持完整的OWL推理,而只支持(大多数情况下)一些基于规则的技术,这些技术适用于OWL的一个片段。 - UninformedUser
@AKSW,这个本体属于OWL2 RL。 - Stanislav Kralin
1个回答

2
在创建存储库时:

如果您尝试导入数据,GraphDB将会提示:

Could not import data; com.ontotext.trree.consistency.ConsistencyException:
Consistency check eq_diff1_1 failed:
urn:demoMale owl:differentFrom urn:demoMale
urn:demoMale owl:sameAs urn:demoMale
或者,取消复选框的选择,导入您的数据,然后执行:
PREFIX sys: <http://www.ontotext.com/owlim/system#>
INSERT DATA { []  sys:consistencyCheckAgainstRuleset "owl2-rl" }

另一种建模方法是将MaleFemale创建为Person的不相交子类。
owl:FunctionalProperty不同,owl:AllDisjointClassesOWL 2 QL所覆盖。

谢谢Stanislav - 我假设在打开一致性检查并选择OWL2-RL作为存储库的默认设置(RDFS-Plus Optimized)时,会有性能损失?这会影响数据导入、查询还是两者都会受到影响? - wabrit
当然,这会有性能损失... 也许您可以尝试“OWL2RL优化”规则集。这种惩罚主要会影响数据导入,因为GraphDB会实现推断语句。 - Stanislav Kralin
@wabrit,是什么阻止你接受答案呢? - Stanislav Kralin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接