0

我正在尝试从具有成分的药物本体中获取实体,使用限制如下

  • OBI_0000576'分散的分子聚集体'
  • BFO_0000053'是'的承载者
  • BFO_0000071'有颗粒部分'

但没有指定质量 ( PATO_0000125)。例如“对乙酰氨基酚/氢可酮口服片剂” http://purl.obolibrary.org/obo/DRON_00020585但不是“对乙酰氨基酚 230 毫克/氢可酮 5 毫克口服片剂” http://purl.obolibrary.org/ obo/DRON_00038671

我已经通过两个先前开发的查询将其实现为减号操作

我已经养成了将 owl 限制称为空白节点的习惯,而不是给它们变量

此查询运行缓慢(在具有 SSD 和 64 GB RAM 的服务器上运行 45 分钟)。我想将查询合并在一起并过滤掉指定质量的模式。我想我需要指定rdf:rest提及质量的交集,在可选的 {} 子句中使用变量,然后过滤该变量未绑定的情况。

我看不到如何在 [] 空白节点表示法中做到这一点?可能吗?

PREFIX obo: <http://purl.obolibrary.org/obo/> PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> select ?d ?dl where { { ?d rdfs:label ?dl ; rdfs:subClassOf [ owl:onProperty <http://www.obofoundry.org/ro/ro.owl#has_proper_part> ; owl:someValuesFrom [ owl:intersectionOf [ rdf:first obo:OBI_0000576 ; rdf:rest [ rdf:first [ owl:onProperty obo:BFO_0000053 ] ; rdf:rest [ rdf:first [ owl:onProperty obo:BFO_0000071 ; owl:someValuesFrom ?c ] ] ] ] ] ] . } minus { ?prod rdfs:label ?l ; rdfs:subClassOf [ owl:someValuesFrom [ owl:intersectionOf [ rdf:rest [ rdf:rest [ rdf:first [ owl:onProperty obo:BFO_0000053 ; owl:someValuesFrom [ owl:intersectionOf [ rdf:first <http://purl.obolibrary.org/obo/PATO_0000125> ] ] ] ] ] ] ] ] . ?d rdfs:subClassOf* ?prod ; rdfs:label ?dl . } }

4

0 回答 0