owl:functionalProperty & owl:differentFrom

标签 owl graphdb

对于我认为非常简单的场景,如果能提供一些帮助,我将不胜感激;但作为 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 的类,并断言有 2 个 distinct 成员 Male 和 Female。

然后我定义了另一个类 Person,它有一个 functional 属性 hasGender,其范围是 Gender。

最后我断言了一个 Person 的实例,还有两个单独的断言,它既是男性又是女性。

据我了解,这是一种矛盾;我已经断言 hasGender 属性是有效的,因此对于给定的 Person,应该只有一种性别。我还断言 Male 和 Female 是不同的,所以当我将其导入 GraphDB 时,我预计它会因此而失败。

但是 GraphDB 很乐意加载这两个断言。我错过了什么吗?

最佳答案

creating a repository :

如果您尝试导入数据,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:AllDisjointClasses 包含在 OWL 2 QL 中.

关于owl:functionalProperty & owl:differentFrom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48953802/

相关文章:

python - 使用 RDFlib 向 GraphDB 插入数据时查询出错

owl - Horst (pD*) 与 OWL2-RL 相比

rdf - OWL ObjectProperty 在 Protégé 中作为注释加载

http - 使用 RDF4J 返回错误查询 FactForge Sparql 端点

xsd - 文字的 xsd 数据类型有子类吗?

cors - 在 GraphDB 上启用 CORS

java - 使用 Jena API 编写 Tbox 模型

semantic-web - 什么是一般类公理?

semantic-web - owl protege 我如何描述一个只有一些属性的类?

sparql - 创建数据属性 XSD :string with Jena