[英]RDFS analogue to owl:equivalentClass?
我有三元组,表示患者P
参加医疗保健遭遇会E
,该医疗会输出药物处方M
处方可以mention
药物本体论或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 ,“抗胆固醇药”。 这样可以很容易地找到接受阿托伐他汀或其他具有相同作用的药物的患者。
不幸的是,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自定义规则集执行类似的操作吗?
如果它是一个OWL存储库,我会说
obo:CHEBI_38545 owl:equivalentClass obo:DRON_00018679
我可以使用RDFS或GraphDB自定义规则集执行类似的操作吗?
第一
您显然可以用两个倒数的rdfs:subClassOf
代替owl:equivalentClass
。 至于这些公式的等效性,我认为这是相关的:
第二
owl:equivalentClass
已经在RDFS-Plus中。
从第一版面向工作本体的语义网的第7章中,首次引入RDFS-Plus:
RDFS-Plus使用结构
owl:equivalentClass
提供了更直观的类等效表达。
在GraphDB中, RDFS-Plus和RDFS-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
当我在RDFS + GraphDB存储库中使用@StanislavKralin的对等rdfs:subClassOf
方法时...
:x
和:y
三元组,以及类:x
实例:z
: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 { :xa owl:Class . :ya owl:Class . :za :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 | +----+---------------------+-----------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.