【发布时间】:2018-01-10 15:59:34
【问题描述】:
我想说U. Penn Biobank consenter 是一个Homo sapiens,它有一个consenter role 并参与了一个informed consent process,在informed consent process 上至少有三个详细说明
- 它也有个人
U. Penn Biobank Organization作为参与者 - 它有一个
fully signed consent form作为指定的输出
我认为这一切都在我的掌控之中,但我正在为此苦苦挣扎:
-
consenter role在前面提到的informed consent process中实现
这是我目前在 Protégé 的 equivalent to 框中的内容:
'Homo sapiens' and 'has role' some 'consenter role' and 'participates in' some ('informed consent process' and ((has_specified_output some 'fully signed informed consent form') and 'has participant' value 'U. Penn Biobank Organization'))
我怎么能说consenter role 是在同一个informed consent process 中实现的?
基于@StanislavKralin 的cmets,我尝试在逻辑定义中添加对Self 的引用,但Protégé 对此也不满意。似乎你不能在比说关系的主语和谓语是同一个人更复杂的事情中使用Self,比如将Narcissist定义为Homo sapiens谁
loves Self
编辑:我认为以下内容与我所希望的很接近。它表示此人具有在informed consent process 中实现的角色。
'Homo sapiens’ and 'has role' some ( 'consenter role' and 'realized in' some ( 'informed consent process' and ( (has_specified_output some 'fully signed informed consent form') and 'has participant' value 'U. Penn Biobank Organization')))
随便地说,你可以说这个定义意味着这个人参与了这个过程,但我不认为这是不言自明的。 我写了一些 SPARQL 查询来测试它,但回想起来,我认为我一直在寻找错误的树。
我将UPBBC1 实例化为U. Penn Biobank consenter 类的实例,并在使用OWL 2 QL 推理的Ontotext GraphDB 中运行这些查询。我想我也会尝试一些其他的推理级别。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select * where {
?i a ?c .
?c rdfs:label "U. Penn Biobank Consenter"
}
+-----------------------------------------------+------------------------------------------------------+
| ?i | ?c
|
+-----------------------------------------------+------------------------------------------------------+
| <http://transformunify.org/ontologies/UPBBC1> | <http://transformunify.org/ontologies/TURBO_0000502> |
+-----------------------------------------------+------------------------------------------------------+
实例被推断为Homo sapiens。
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select * where {
?i a ?c .
?c rdfs:label "Homo sapiens"
}
+-----------------------------------------------+-------------------------------------------------+
| ?i | ?c |
+-----------------------------------------------+-------------------------------------------------+
| <http://transformunify.org/ontologies/UPBBC1> | <http://purl.obolibrary.org/obo/NCBITaxon_9606> |
+-----------------------------------------------+-------------------------------------------------+
但不被推断参与过任何事情
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select * where {
?i <http://purl.obolibrary.org/obo/RO_0000056> ?proc
}
表格中没有可用数据
【问题讨论】:
-
嗯,我不确定,但可能你只需要像
… and 'has role' o 'realized in' o (inverse 'participates in') Self这样的东西。在曼彻斯特语法中,o表示属性链。 -
谢谢。我正在考虑将链
'has role' o 'realized in'添加为participates in的等效属性。你的建议听起来更安全。 -
@StanislavKralin 你确定属性链可以包含在类定义中吗? Protege似乎不喜欢它。它确实接受以下内容:
'has role' some ('realized in' some (inverse 'participates in' self))我现在要对其进行测试。 -
顺便说一句,似乎非简单属性不能出现在自我限制中:(.
-
@MarkMiller OWL 2 QL 推理既不考虑具有属性链的子属性公理,也不考虑
self限制。我想你需要 OWL 2 DL 推理,据我所知只有 Stardog 支持。如果您的三重商店允许,我猜自定义规则可能会更有效。
标签: sparql rdf owl protege graphdb