使用[]空节点表示法时过滤未绑定?

时间:2018-02-22 15:42:57

标签: sparql graphdb

我正试图从药物本体中获取有一种成分的实体,使用像

这样的限制
  • OBI_0000576'散射分子聚合物'
  • BFO_0000053'是'
  • 的承载者
  • BFO_0000071'具有细粒度部分'

但未指定指定的质量(PATO_0000125)。一个例子是'对乙酰氨基酚/氢可酮口服片'  http://purl.obolibrary.org/obo/DRON_00020585'对乙酰氨基酚230 MG /氢可酮5 MG口服片'http://purl.obolibrary.org/obo/DRON_00038671

我已将此实现为带有两个先前开发的查询的减号操作

我养成了将猫头鹰限制称为空白节点而不是给它们变量的习惯

此查询运行缓慢(在具有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 . } }

0 个答案:

没有答案