1

我有三倍说患者P参与了E有输出的医疗保健遭遇M,一个药物处方。处方可以mention是来自药物本体或 DrOn 的药物。

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

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,“抗胆固醇药物”。这使得很容易找到服用了阿托伐他汀或其他具有相同作用的药物的患者。

不幸的是,DrOn 为某些药物创建了自己的术语,而不是从 ChEBI 进口它们。例如,另一种降胆固醇药物瑞舒伐他汀被建模为http://purl.obolibrary.org/obo/DRON_00018679而不是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 自定义规则集做类似的事情吗?

4

2 回答 2

4

如果它是一个 OWL 存储库,我只想说

obo:CHEBI_38545 owl:equivalentClass obo:DRON_00018679

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

第一的

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

第二

owl:equivalentClass已经在 RDFS-Plus 中。

来自Semantic Web for the Working Ontologist第一版的第 7 章,其中首次介绍了 RDFS-Plus:

RDFS-Plus 使用构造来提供更直观的类等价表达owl:equivalentClass

在 GraphDB 中,RDFS-PlusRDFS-Plus(优化)规则集支持owl:equivalentClass. 文件中有以下规则builtin_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
于 2018-04-12T16:56:41.670 回答
1

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

  • :x插入一些关于类和的三元组,并带有类:y的实例:z:x
  • 断言:x:y是彼此的子类

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 | +----+---------------------+-----------+

于 2018-04-12T18:34:50.147 回答