首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RDF,请求关于如何将一个成员建模为一个集合的ORed (所有)成员和一个建模到一个集合的ANDed (all)成员的建议。

使用RDF,请求关于如何将一个成员建模为一个集合的ORed (所有)成员和一个建模到一个集合的ANDed (all)成员的建议。
EN

Stack Overflow用户
提问于 2019-05-29 06:58:05
回答 2查看 61关注 0票数 0

我正在寻找一种使用RDF建模的方法--一种用于集合关系的ORed (all)成员,以及一种用于集合的ANDed (all)成员。

手头的任务是如何表示(使用RDF语句)一个治疗方案,如下所示。

"Regimen_A“方案由药物(DB14502或DB09449)和DB11094组成

使用RDF/XML,我现在不得不提出由名单A中的一种(替代)药物和名单B中所有(非可选的)药物组成的药物组合(方案)。

a)药物方案有可能有零、一个或多个备选清单以及零、一个或多个非可选药物清单。

b)我还想把每种药物作为URIref的一种资源。( c)这些清单中的药物( ORed列表和ANDed列表)可以来自不同的数据库,如drugbank、ChEBI或WHOCC。例如,药物银行的URIref DB14502应该是"https://www.drugbank.ca/drugs/DB14502“。ChEBI药物的URI将是"17012“,除了URIref之外,还需要以某种方式明确地提供药物源数据库的指示。

我一直在阅读RDF入门https://www.w3.org/TR/rdf-primer/,目的是将下面的解决方案编码为RDF/XML,并将其扩展到满足上述需求,但在这方面没有取得多大进展。

下面是RDF数据(由Jeen Broekstra提供,作为对我最初问题的回答),我想转换为RDF/XML

代码语言:javascript
复制
:regimenA :consistsOf [ a :DrugAlternative; 
                        :option :DB14502;
                        :option :DB09449 ],
                      :DB11094. 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-29 22:57:37

您可以通过为OR引入自己的词汇表概念来表达它。

代码语言:javascript
复制
:regimenA :consistsOf [ a :Or; 
                        :option :DB14502;
                        :option :DB09449 ],
                      :DB11094. 

对于AND,您不需要任何特殊的词汇表。在您的情况下,可能更好的方法是在您介绍的词汇表中捕获域语义,而不是一般的“逻辑或”:

代码语言:javascript
复制
:regimenA :consistsOf [ a :DrugAlternative; 
                        :option :DB14502;
                        :option :DB09449 ],
                      :DB11094. 

您也可以使用标准的RDF词汇表来处理这类事情,使用rdf:Alt容器。它在语义上与逻辑OR不完全相同,但在大多数意图和目的上,它是接近的:

代码语言:javascript
复制
:regimenA :consistsOf [ a rdf:Alt; 
                        rdfs:member :DB14502;
                        rdfs:member :DB09449 ],
                      :DB11094. 

RDF还有用于表示列表( RDF收藏词汇表)的标准词汇表。您可以如下所示:

代码语言:javascript
复制
:regimenA :consistsOf (:DB14502 :DB09449), :DB11094;

这里潜在的缺点是,这种建模方式使得列表中的项目是隐含的替代品这一事实。

当然,如果您想要将包含应用于其中任何一个,那么您必须超越RDF,使用规则语言(如SPIN/SHACL ),或者使用更有表现力的本体语言(如OWL )。但是,如果您的目标是有一种方法来表达这一点,以便以后可以通过SPARQL查询它,那么上述解决方案就可以了。

票数 0
EN

Stack Overflow用户

发布于 2019-06-08 08:29:25

发布的Turtle格式的RDF解决方案(由Jeen Broekstra提供,以回答我最初的问题)加上前缀将是

代码语言:javascript
复制
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <http://someplace.org/stuff/1.0/> .
:regimenA :consistsOf [ a :DrugAlternative; 
                        :option :DB14502;
                        :option :DB09449 ],
                      :DB11094. 

将此海龟格式化的RDF数据传递给RDF/Turtle到RDF/XML转换器,如"http://www.easyrdf.org/converter“生成。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:ns0="http://someplace.org/stuff/1.0/">

  <rdf:Description rdf:about="http://someplace.org/stuff/1.0/regimenA">
    <ns0:consistsOf>
      <ns0:DrugAlternative>
        <ns0:option rdf:resource="http://someplace.org/stuff/1.0/DB14502"/>
        <ns0:option rdf:resource="http://someplace.org/stuff/1.0/DB09449"/>
      </ns0:DrugAlternative>
    </ns0:consistsOf>

    <ns0:consistsOf rdf:resource="http://someplace.org/stuff/1.0/DB11094"/>
  </rdf:Description>

</rdf:RDF>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56354727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档