這是我最小的數據:合併本例中沒有工作
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 .
這是我的查詢:
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)
}
}
這是結果;
看那resultForMe,它沒有任何價值,爲什麼呢?這是我的問題雖然defaultMatchedTemporalContext有一個值。
我給你需要的,你可以上傳數據上你的SPARQL商店,如果你想要的,它僅僅是4 RDF的線
問題將是1)你的'IF'表達式是否工作 - >看起來對我和2)首先評估什麼,'VALUES'或'BIND'。 – AKSW
順便說一句,爲了簡單起見,我會刪除所有可選的東西 – AKSW
@AKSW感謝您的評論1)是的IF是真實的,如果你想確定,用任何值替換合併,例如3,你會得到3.2)值在綁定之前,所以應該先評估它。 (至少到我的新手知識) –