Sparql 在本例中,合并不起作用

Sparql 在本例中,合并不起作用,sparql,rdf,owl,ontology,Sparql,Rdf,Owl,Ontology,这是我的最低数据: PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rs: <http://www.SemanticRecommender.com/rs#> PREFIX mo: <http://www.musicontology.com/mo#&

这是我的最低数据:

    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    PREFIX rs: <http://www.SemanticRecommender.com/rs#>
    PREFIX mo: <http://www.musicontology.com/mo#>
    PREFIX  : <http://www.musicsemanticontology.com/mso#>

    mo:5th_symphony_for_beethoven a mo:GermanSymphony .
    :symphonyFestival2016 a rs:TemporalContext ; rs:appliedOnItems mo:GermanSymphony ; rs:canBeRecommendedFrom "2016-07-01T00:00:00-00:00"^^xsd:dateTime ; rs:canBeRecommendedUntil "2016-09-01T00:00:00-00:00"^^xsd:dateTime .
前缀rdf:
前缀xsd:
前缀rs:
前缀mo:
前缀:
莫:贝多芬第五交响曲莫:德国交响曲。
:symphonyFestival2016 rs:临时上下文;rs:appliedOnItems mo:GermanSymphony;rs:Canberedfrom“2016-07-01T00:00:00-00:00”^^xsd:dateTime;rs:CanbereCommeridentil“2016-09-01T00:00:00-00:00”^^xsd:dateTime。
这是我的疑问:

   PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rs: <http://www.SemanticRecommender.com/rs#>
PREFIX mo: <http://www.musicontology.com/mo#>
PREFIX  : <http://www.musicsemanticontology.com/mso#>

   SELECT ?item  ?resultForMe  ?matchedWeight ?defaultMatchedTemporalContext
    WHERE
      {
    values ?item {mo:5th_symphony_for_beethoven}
          VALUES ( ?defaultMatchedTemporalContext ?defaultNotMatchedTemporalContext ?defaultNoTemporalContext ) {( 2 0.5 1 )}
            ?temporalContext
                      rdf:type           rs:TemporalContext ; rs:appliedOnItems  ?itemClass .
                       OPTIONAl {       ?item     rdf:type           ?itemClass
            OPTIONAL { ?temporalContext rs:canBeRecommendedFrom  ?fromLimit }
            OPTIONAL { ?temporalContext rs:canBeRecommendedUntil  ?untilLimit  }
            OPTIONAL { ?temporalContext rs:hasWeightIfContextMatched  ?matchedWeight }
            OPTIONAL { ?temporalContext rs:hasWeightIfContextDoesNotMatch  ?unmatchedWeight }
     BIND(if(( (?fromLimit <= now()) && (now() <= ?untilLimit ) )  , coalesce (?matchedWeight, ?defaultMatchedTemporalContext),2 ) as ?resultForMe)
    }
}
前缀rdf:
前缀xsd:
前缀rs:
前缀mo:
前缀:
选择?项目?结果格式?匹配重量?默认匹配时间上下文
哪里
{
价值观?项目{mo:贝多芬第五交响曲}
值(?defaultMatchedTemporalContext?defaultNotMatchedTemporalContext?defaultNoTemporalContext){(20.51)}
?临时上下文
rdf:键入rs:TemporalContext;rs:appliedOnItems?itemClass。
可选的{?项rdf:类型?项类
可选{?临时上下文:可从?fromLimit}推荐
可选{?临时上下文:canberecommentedentil?untellimit}
可选{?临时上下文rs:hasWeightIfContextMatched?matchedWeight}
可选{?临时上下文rs:hasWeightIfContextDoesNotMatch?unmatchedWeight}
绑定(如果((?fromLimit
前缀rdf:
前缀xsd:
前缀rs:
前缀mo:
前缀:
选择?项目?结果格式?匹配重量?默认匹配时间上下文
哪里
{
价值观?项目{mo:贝多芬第五交响曲}
值?DefaultNoteTemporalcontext{1}
值?defaultMatchedTemporalContext{2}
值?defaultNotMatchedTemporalContext{0.5}
?临时上下文
rdf:键入rs:TemporalContext;rs:appliedOnItems?itemClass。
可选的{?项rdf:type?itemClass。
值?defaultMatchedTemporalContext{2}
可选{?临时上下文:可从?fromLimit}推荐
可选{?临时上下文:canberecommentedentil?untellimit}
可选{?临时上下文rs:hasWeightIfContextMatched?matchedWeight}
可选{?临时上下文rs:hasWeightIfContextDoesNotMatch?unmatchedWeight}

BIND(if((?fromLimit)问题是1)你的
if
表达式在我看来是否有效,2)首先计算的是
还是
BIND
。顺便说一句,为了简单起见,我将删除所有可选值stuff@AKSW感谢您的评论(1)是的,如果是真的,如果你想确定,用任何值替换coalesce,例如3,你会得到3。2)值在绑定之前,所以应该首先对它进行评估。(至少对我的新手来说)@AKSW我无法删除可选内容,此查询是一个非常大的查询的简化。我当前的问题应该有一个原因/解决方案,而不是更改我的查询。不,这肯定会有帮助。我发现了问题。请看我下面的答案……我认为你不想嵌套可选内容,对吗?@AKSW确实我希望如此。我确实希望我有一个复杂的senario,我已经向你展示了它的一部分。+1对于帮助,我很感激itOk,我不知道有更多的东西与
rdf:type
三重模式相关联。然后我可以删除我的答案。所以问题是VALUES子句的范围
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rs: <http://www.SemanticRecommender.com/rs#>
PREFIX mo: <http://www.musicontology.com/mo#>
PREFIX  : <http://www.musicsemanticontology.com/mso#>

   SELECT ?item  ?resultForMe  ?matchedWeight ?defaultMatchedTemporalContext
    WHERE

{
    VALUES ?item {mo:5th_symphony_for_beethoven}
    VALUES ?defaultNoTemporalContext  { 1 }
    VALUES ?defaultMatchedTemporalContext { 2 }
    VALUES ?defaultNotMatchedTemporalContext { 0.5 }
    ?temporalContext
                      rdf:type           rs:TemporalContext ; rs:appliedOnItems  ?itemClass .
                       OPTIONAl {       ?item     rdf:type           ?itemClass.
 VALUES ?defaultMatchedTemporalContext { 2 }

            OPTIONAL { ?temporalContext rs:canBeRecommendedFrom  ?fromLimit }
            OPTIONAL { ?temporalContext rs:canBeRecommendedUntil  ?untilLimit  }
            OPTIONAL { ?temporalContext rs:hasWeightIfContextMatched  ?matchedWeight }
            OPTIONAL { ?temporalContext rs:hasWeightIfContextDoesNotMatch  ?unmatchedWeight }
     BIND(if(( (?fromLimit <= now()) && (now() <= ?untilLimit ) )  , coalesce (?matchedWeight, ?defaultMatchedTemporalContext) ,2 ) as ?resultForMe)
    }
}