RDFS 类似于 owl:equivalentClass?

RDFS analogue to owl:equivalentClass?

我有三元组说患者 P 参与医疗保健会面 E,它有输出 M,一个药物处方。处方可以mention一药从药Ontology,或DrOn。

在这种情况下,假设 M1 提到了降胆固醇药物阿托伐他汀,它是从 ChEBI 导入 DrOn 的 http://purl.obolibrary.org/obo/CHEBI_39548:

prefix obo: <http://purl.obolibrary.org/obo/> :M1 obo:IAO_0000142 obo:CHEBI_39548 .

ChEBI 有一个公理,即 obo:CHEBI_39548 具有作用 http://purl.obolibrary.org/obo/CHEBI_35821、"anticholesteremic drug"。这样可以很容易地找到服用阿托伐他汀或具有相同作用的其他药物的患者。

不幸的是,DrOn 为某些药物创建了自己的术语,而不是从 ChEBI 导入它们。例如另一种降胆固醇药物瑞舒伐他汀,建模为http://purl.obolibrary.org/obo/DRON_00018679 instead of http://purl.obolibrary.org/obo/CHEBI_38545。 ChEBI 的瑞舒伐他汀术语也用 obo:CHEBI_39548 注释,但 obo:DRON_00018679 不是。因此,我的数据集中服用瑞舒伐他汀的患者不会出现在我现有的基于角色的查询中。

我在 GraphDB RDFS-plus 存储库中有这些数据,我不想现在更改推理级别。如果它是一个 OWL 存储库,我会说

obo:CHEBI_38545 owl:equivalentClass obo:DRON_00018679

我可以用 RDFS 或 GraphDB 自定义规则集做类似的事情吗?

If it was an OWL repository, I would just say

obo:CHEBI_38545 owl:equivalentClass obo:DRON_00018679

Is there something similar I can do with RDFS, or a GraphDB custom ruleset?

第一

你显然可以用两个倒数 rdfs:subClassOf 代替 owl:equivalentClass。至于这些公式的等价性,我想这是相关的:

第二

owl:equivalentClass 已经在 RDFS-Plus 中。

摘自工作本体论语义网第一版第 7 章,其中首次引入了 RDFS-Plus:

RDFS-Plus provides a more intuitive expression of class equivalence, using the construct owl:equivalentClass.

在 GraphDB 中,RDFS-PlusRDFS-Plus(优化) 规则集支持 owl:equivalentClassbuiltin_rdfsPlus-optimized.pie 文件中有以下规则:

Id: owl_EquivClassBySubClass

  a <rdfs:subClassOf> b [Constraint b != a]
  b <rdfs:subClassOf> a [Cut]
------------------------------------
  a <owl:equivalentClass> b

和以下公理:

<owl:equivalentClass> <rdf:type> <owl:TransitiveProperty>
<owl:equivalentClass> <rdf:type> <owl:SymmetricProperty>
<owl:equivalentClass> <rdfs:subPropertyOf> <rdfs:subClassOf>

在更高的配置文件中,改为使用两个规则:

Id: scm_eqc1
  c1 <owl:equivalentClass> c2            [Constraint c1 != c2 ]
  -------------------------------
  c1 <rdfs:subClassOf> c2
  c2 <rdfs:subClassOf> c1

Id: scm_eqc2
  c1 <rdfs:subClassOf> c2                [Constraint c1 != c2 ]
  c2 <rdfs:subClassOf> c1                
  -------------------------------
  c1 <owl:equivalentClass> c2

当我在 RDFS+ GraphDB 存储库中使用@StanislavKralin 的倒数 rdfs:subClassOf 方法时...

  • 插入一些关于 classes :x:y 的三元组,实例 :z of class :x
  • 断言 :x:y 是彼此的子class

PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> prefix : <http://localhost/> insert data { :x a owl:Class . :y a owl:Class . :z a :x . :x rdfs:subClassOf :y . :y rdfs:subClassOf :x . }

然后查询关于:x:y:z

的所有三元组

select * where { ?s ?p ?o . filter(regex(str(?s), "localhost")) } order by ?s ?p ?o

我免费得到owl:equivalentClass

+----+---------------------+-----------+ | s | p | o | +----+---------------------+-----------+ | :x | rdf:type | owl:Class | | :x | rdfs:subClassOf | :x | | :x | rdfs:subClassOf | :y | | :x | owl:equivalentClass | :x | | :x | owl:equivalentClass | :y | | :y | rdf:type | owl:Class | | :y | rdfs:subClassOf | :x | | :y | rdfs:subClassOf | :y | | :y | owl:equivalentClass | :x | | :y | owl:equivalentClass | :y | | :z | rdf:type | :x | | :z | rdf:type | :y | +----+---------------------+-----------+