Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
rdf:type이 b:Device이고 b:Device의 위치가 o:techno인 경우에 DeviceType을 여러개 가지는(hasDeviceType)는 경우는 아래와 같이 sparql을 만들어서 or 기능을 구현할 수도 있다.(DeviceType이 o:motion-sensor_33 이거나 o:motion-sensor_32 경우)
-------------union으로 or을 구현한 예제
select distinct ?uri where {
?uri rdf:type b:Device.
?uri dul:hasLocation o:techno.
{ ?uri o:hasDeviceType o:motion-sensor_33 .}
union
{ ?uri o:hasDeviceType o:motion-sensor_32 .}
}
*참고 : sparql에서는 아래와 같이 각 ?s ?p ?o중의 하나에 직접 ||, &&, or , and등을 이용한 형태를 지원하지 않지 않으므로 filter문을 이용하여 처리해야 함
----지원하지 않는 형태----
select * where {
?s ?p ('a' or 'b')
}
----filter문을 이용해서 or을 구현한 형태
select *
where {
?uri rdf:type b:Device.
?uri dul:hasLocation o:techno .
?uri o:hasDeviceType ?devType .
filter (?devType = o:/motion-sensor_32 || ?devType = o:/motion-sensor_33) .
}