Sparql查询subPropertyOf

时间:2015-03-08 14:55:44

标签: sparql semantics semantic-web protege

这是一个小型本体,可以获得颜色组合及其评论 例如(红色组合与黑色和hasReview"完美匹配") 有没有更好的方法呢? 我试图查询SubPropertyOf。 是否可以这样做:hasReview rdfs:subPropertyOf:combineWith。

谢谢

PREFIX : <http://myexample#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
SELECT ?color ?colorcode ?coc ?review ?description
WHERE   { 
    ?color rdf:type :Color;
                  :Code  ?colorcode .
        {SELECT ?coc
    WHERE {
        ?color :combinesWith ?coc .
       //here I would to get the value of hasReview 

      :hasReview rdfs:subPropertyOf :combinesWith .
    }
} 
}

1 个答案:

答案 0 :(得分:0)

我将首先尝试并设置我如何想象你对subClassOf的意义的想法(如果我的印象错误,请随意纠正我)及其实际意义,然后继续解释你如何实现你要找的是什么。


适用于您的:combinesWith财产

?color :combinesWith ?coc .

让我们假设以下小数据集:

:red :combinesWith :yellow .
:red :combinesWith :purple .
:green :combinesWith :yellow .
:green :combinesWith :white .
:green :combinesWith :black .
:white :combinesWith :silver .
:white :combinesWith :black .
:black :combinesWith :white .

显然,您假设属性 X 的子属性是适用于其谓词为属性 X 的三元组的属性。具体而言,在上面的数据集中,您似乎认为您可以为每个组合分配评论,例如(伪代码,没有有效语法!):

{ :red :combinesWith :yellow } :hasReview "a combination of warm colors" .
{ :green :combinesWith :yellow } :hasReview "nature, sunflowers" .
{ :black :combinesWith :white } :hasReview "too much contrast for my taste" .

然而,实际上,属性 X 的子属性 Y 可以通过某种方式理解,以便所有三元组的谓词属性 Y ,还有一个具有相同主语和对象的三元组,其谓词是 X 。或者,在稍微不同的解释中,当您查找其谓词为 X 的三元组时,您将找到其谓词为 X 的所有三元组以及其谓词为<的所有三元组EM>ÿ。它的工作方式与子类类似。

因此,对于上述数据集,可能合理的是声明一个新属性:combinesPerfectlyWith,它是:combinesWith的子属性。像这样,您可以将数据集更改为以下内容:

:red :combinesWith :yellow .
:red :combinesPerfectlyWith :purple .
:green :combinesPerfectlyWith :yellow .
:green :combinesWith :white .
:green :combinesWith :black .
:white :combinesWith :silver .
:white :combinesWith :black .
:black :combinesWith :white .

您在这里没有丢失任何信息,您只是在进一步指定一些信息。


现在,回到您实际上想要做的事情 - 使用颜色组合分配一个或多个评论。

为此,实际审核(或至少是其存在的指标?)将成为与评论相关的三元组的对象,您必须拥有某些可以是学科。 某些需要是另一个IRI或空白节点,它代表颜色组合。

因此,您可能希望以:ColorCombination类型的方式重新定义本体,其中包含:color:hasReview等属性。然后,数据集的摘录可能如下所示:

_:cc1 a :ColorCombination ;
    :color :red ;
    :color :purple .
_:cc2 a :ColorCombination ;
    :color :red ;
    :color :yellow ;
    :hasReview "a combination of warm colors" .
...

现在,在SPARQL查询中,您可以使用一些简单的三重模式来获取值。鉴于您的嵌套SELECT查询仅导出变量?coc,并且未与外部查询中的限制相关联,我不完全确定您的查询要执行的操作。