owl:functionalProperty & owl:differentFrom
owl:functionalProperty & owl:differentFrom
对于我认为非常简单的场景,如果能提供一些帮助,我将不胜感激;但作为 OWL 和 GraphDB 的新手,我可能犯了一些基本错误。
我有一个非常简单的 Turtle 指定 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 的 class 并断言有 2 个 distinct 成员 Male 和 Female。
然后我定义另一个 class Person with a functional 属性 hasGender 范围是 Gender.
最后我断言了一个 Person 的实例,还有两个单独的断言它既是男性又是女性。
据我了解,这有点矛盾;我已经断言 hasGender 属性 是有功能的,因此对于给定的 Person,应该只有一种性别。我还断言男性和女性是不同的,所以当我将其导入 GraphDB 时,我预计它会因此而失败。
但是 GraphDB 很乐意加载这两个断言。我错过了什么吗?
- select Check for inconsistencies 复选框;
- select ruleset called OWL2-RL.
如果您尝试导入数据,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
或者,取消select复选框,导入数据然后执行:
PREFIX sys: <http://www.ontotext.com/owlim/system#>
INSERT DATA { [] sys:consistencyCheckAgainstRuleset "owl2-rl" }
另一种建模方法是创建 Male
和 Female
作为 Person
的不相交子类。
与 owl:FunctionalProperty
不同,owl:AllDisjointClasses
被 OWL 2 QL.
覆盖
对于我认为非常简单的场景,如果能提供一些帮助,我将不胜感激;但作为 OWL 和 GraphDB 的新手,我可能犯了一些基本错误。
我有一个非常简单的 Turtle 指定 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 的 class 并断言有 2 个 distinct 成员 Male 和 Female。
然后我定义另一个 class Person with a functional 属性 hasGender 范围是 Gender.
最后我断言了一个 Person 的实例,还有两个单独的断言它既是男性又是女性。
据我了解,这有点矛盾;我已经断言 hasGender 属性 是有功能的,因此对于给定的 Person,应该只有一种性别。我还断言男性和女性是不同的,所以当我将其导入 GraphDB 时,我预计它会因此而失败。
但是 GraphDB 很乐意加载这两个断言。我错过了什么吗?
- select Check for inconsistencies 复选框;
- select ruleset called OWL2-RL.
如果您尝试导入数据,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
或者,取消select复选框,导入数据然后执行:
PREFIX sys: <http://www.ontotext.com/owlim/system#>
INSERT DATA { [] sys:consistencyCheckAgainstRuleset "owl2-rl" }
另一种建模方法是创建 Male
和 Female
作为 Person
的不相交子类。
与 owl:FunctionalProperty
不同,owl:AllDisjointClasses
被 OWL 2 QL.