메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.


#select ?person_loc ?observ_val ?avg_prefer_val ((?observ_val- ?avg_prefer_val) as ?dd) 
#(if(?observ_val = ?avg_prefer_val, "equal", if(?observ_val > ?avg_prefer_val, "big", "small")) as ?rtn2)
select *
where 
{
#    ?person_loc rdf:type DUL:PhysicalPlace;
    icbms:DT0001 rdf:type DUL:PhysicalPlace;
       rdf:type icbms:Domitory ;
       ssn:hasValue ?observ .
  ?observ rdf:type ssn:ObservationValue ;
    rdf:type icbms:TemperatureObservationValue ;
     qudt:hasNumericValue ?observ_val .
  bind(   (if(xsd:double(?observ_val) = xsd:double(?avg_prefer_val), "equal"^^xsd:string, "small"^^xsd:string)) as ?rtn)
  bind(if(?observ_val < 0,"a","b") as ?test1)
  bind(xsd:double(?observ_val) as ?test2)
  bind(xsd:double(?avg_prefer_val) as ?test3)
  BIND(?person_loc as ?test4) .
  {
   select ?person_loc (avg(?prefer_val) as ?avg_prefer_val) {
   ?person_id rdf:type foaf:Person ;
      rdf:type icbms:Student ;
      DUL:hasLocation ?person_loc ;
      icbms:hasPreference ?pre .
    ?pre rdf:type icbms:Preference ;
      icbms:hasPreferenceKind icbms:TemperaturePreference ;
      DUL:hasDataValue ?prefer_val .
    } group by (?person_loc)
  }
}
  
  
  
===================결과값================================
sparql_result_20160121_102703.png


rtn, test3, test4의 값이 null로 표시된다.

rtn을 구하기 위한 ?observ_val와 ?avg_prefer_val값이 있는데도 불구하고 말이다.

그러나 bind를 쓰지않고 select 절에 if문을 사용하면 정상적으로 처리된다.
(select에서는 bind를 구문을 사용하지 못하지만 (if(조건식,true일경우,false일경우) as ?rtn) 형태로 표현가능하다.)

  
위로