JenaRDB로 Sparql수행하는 예제

funtheory님의 질문에 포스팅합니다. 우선 온톨로지를 JenaDB로 만들었고, 모델을 가져올 수 있다는 가정하에 함 보죠. 물론 Sparql도 안다는 가정. OntModel model = getOntModel("모델URI"); //모델을 가져옵니다. //getOntModel메소드 추가합니다. private Model getOntModel(String urn){       PersistentOntology po = new PersistentOntology();       ModelMaker maker = po.getRDBMaker(s_dbURL, s_dbUser, s_dbPw, s_dbType, false);             Model model = maker.getModel(urn);         return model;   } 가져온 모델을 이용해 Sparql을 돌려보죠. (온톨로지에는 Person클래스와 nameOfPerson이라는 String타입의 프로퍼티가 있다고 가정할께요.) private void runSPAQL(OntModel model){       //Query query1 = QueryFactory.read("test.rq", "ko");        //이렇게 파일로 만들어도 되요. 메모장에서 utf-8로 저장해야할겁니다. 가물~             Query query1 = QueryFactory.create("PREFIX dc: <http://purl.org/dc/elements/1.1/#>\n" +               "PREFIX owl: <http:/...

Ontology를 사용하면 '사용자'에게 어떤 이득이 있나요?

작년까지 학교에 있었고, 현재 업체에 있는 나의 경우, 답하기 힘든 질문중에 하나는... "Ontology를 사용하면 사용자에게 어떤 이득이 있나요?" 학교에 있을때야 돈이 안되도 그냥 관심가는 분야였고, 뭔가 될거라는 막연한 생각도 했던것 같다. 예전에 어디서 연락을 받고 왔는지는 모르겠지만 다른 업체에서 2006년도 수행했던 과제결과물에 대한 관심을 보이며 관련정보를 보여달라고 찾아왔었다. (작년 과제는 온토롤지 구축과 기반 서비스 프로토타입 시스템 개발이였다. ) 아는건 별로 없지만 예제도 보여주고 구현된 결과물도 보여주면서 성심성의것 답변 해주었다. 답변이 끝나갈 무렵, 그 분이 한 질문이 바로 "온톨로지를 사용하면 사용자에게 어떤 변화가 있나요?"였다. 난  대답했다. "글쎄요 ^^;; 어려운 추론이 섞인 질의나 단순한 전화번호를 묻는 질문이나 17인치 모니터안에서 보이는 것들은 동일할거예요." 어려운 추론이 섞인 질의나 단순한 질이든 사용자 입장에서는 뭐가 되었든 동일할것이고 동일해야 한다고 생각한다. 사실 사용자 가 얼마나 어려운 질의 를 하겠는가!? 별로 안좋아할껄. 차이는 그 다음부터라고 생각한다. 그 사람에게 맞는 서비스를 무엇을 어떻게 더 제공하느냐가 문제일뿐... 소리소문없이... 가끔 거대한 온톨로지를 만들어 이것만 구축되면 진정한 시맨틱웹이 구현될거라고 말하는 사람들을 본적이 있다. 웹이 온톨로지/시맨틱을 아는 사람들의 판은 아니기에 그런 관점이 아닌 보편적으로 웹을 바라보는 사람들의 관점에서 바라봐야한다. terrie 님의 블로그에서 RDFa Primer 1.0 소식을 접했다. HTML안에 RDF를 삽입하는 구조이다. 예전에 SHOE에서 했던 구조와 비슷하지만 태그를 기술하는 방식이 좀더 명시적이다. <html xmlns:contact="http://www.w3.org/2001/vcard-rdf/3.0#"> <span property="c...

SAC2007 후기

이미지
리츠칼튼 호텔에서 열린 SAC2007 에 다녀왔습니다. (좀 늦었네요) 리츠칼튼 호텔이라는 곳을 태어나서 처음 가봤습니다. 기억에 남는것만 몇자 적어볼께요. Semantic Web 2.0컨퍼런스 에 비하면 절반도 안되는 사람들이 온것 같더군요. (아마 동시에 Web2.0컨퍼런스가 다른곳에서 하고 있어서 그런것 같기도 합니다.) Web2.0보다는 사람들 보이는 연령대? 가 조금은 높은것 같다란 생각도 들고요. ^^; Deri Innsbruck 에서 오신 Dieter Fensel아저씨는 Service Web 3.0 ?이라는 기괴한 물건을 가지고 나오셨더군요. 지금도 앞으로도 수많은 서비스들이 출몰하게 되는데 그 감당못하는 서비스들에 대한 Discovery가 중요할 것이며, 올해안에 대기업들이 그런 인프라를 만드는데 뛰어들것이라고 자신의 월급을 걸고 확담을 했습니다. (Deri Innsbruck은 Semantic Web Services에 대한 연구가 많은 걸로 알고 있습니다. 해서 이의 확장팩이 아닌가 싶네요.) 대부분 회사, 제품소개, 프로젝트를 중심으로 발표가 진행되었어요. 그 기술에는 온톨로지가 한 몫을 단단히 할것이라는 얘기와 함께요. "시맨틱웹"이라기 보다는 "시맨틱한 뭔가"에 관심이 많은듯 했습니다. 개인적은 느낌엔 아직 큰 구름이 많은 것 같았어요. 그걸 해서 내세울만한 뭔가가 없어서인가요? 그림을 너무 크게 잡아서 인가요? 기업(Enterprise)를 중심으로 한 그림을 그리고 있지만 Ontology Evaluation, Methology에 대한 문제는 남아 있는것 같습니다. 예전에 ETRI에서 리죽스 기반 데스크탑검색에 대한 기사 를 봤는데, ETRI연구원님께서 발표하시는 내용에 부분 속해 있더군요. (윈도우랑 웹에서도 된다는군요. 웹에서 데스크탑검색?) 관심이 있었던 Annotaiton(그냥 태깅)을 하는 부분은 자동적, 반자동적으로 의미정보를 추출한다고 합니다. 자동부분에 있어서는 NER을 통한 기존 IR에서...

FlickrExport for iPhoto

이미지
FlickrExport for iPhoto iPhoto의 Plugin형식으로 붙어 Flickr로 사진을 전송해주는 툴입니다. 피카사웹 이랑 연동하는 건 안나오나? 30일 버전입니다.

MacPorts로 설치한 Mysql을 이용해서 java개발할 때

이미지
정목님의 Mac에서 Rails 환경 구축하기 를 보고 룰루랄라 레일즈 환경을 마무리하고 이런 저런 테스트를 하고 얼마가 지났다. 새로 시작한 프로젝트에서 MySQL을 이용한 테스트꺼리가 있어서 이클립스를 열고 조각코드를 만들기 시작했다. 그런데, 콘솔에선 Connection Refused만 연발하는게 아닌가! 왜 CocoaMySql을 잘 연결이 되는데 이클립스에서만 안될까하고 여기저기 찾아보니 이 문제로 고생한 흔적이 보였다.(이 사람도 CocoaMySql은 된단다.ㅋ) 여기 문제는 /etc/my.cnf 에 skip-networking이 문제였다. 푸~ 정목님의 MacPorts-MySQL 에 보면 "UTF환경을 위해서"의 [mysqld] skip-networking default-character-set=utf8 default-collation=utf8_general_ci ... 을 고대로 배껴 넣고는 아무생각 없이 삽질을 했던거다. 단순히 [mysqld] #skip-networking ... 만 하면되는데 말이다. 이 참에 MacPorts-MySQL 위키에가서 나처럼 헤맨 사람들을 위해서 "Java에서 Connection가져와야하는 경우는 #skip-networking으로 주석처리하세요~" 라고 코멘트 좀 달려했는데 Edit가 안되네 쩝...@정목님 : 코멘트하나 달아주세요~ ^^ 하나더, MacPorts로 설치한넘이 이상한줄 알고 dmg로도 받아서 이런저런 삽질하던 중 MySQL.prefpane이란걸 발견했다. dmg안에 있는 녀석인데 "시스템 환경설정"붙고, 간단하게 MySQL을 Start/Stop할 수 있다.

개발자라며!

이미지
ㅡ.,ㅡa;;

소셜 네트워크 + 서비스

소셜 네트워크만 생각하면 뭐하냐? 왜 서비스는 생각을 못했지? 소셜 네트워크 서비스...서비스... 에구 골이야.  

구글 캘린더 + iCal

이미지
요즘 맥북쓰는 재미에 푹 산다. 스위칭?하는 시간이 어느정도야 걸리겠지만. 인터넷뱅킹을 제외하고는 거의 맥에서 처리한다. 이유를 대략 살펴보니, 보통 컴퓨터를 열고 시작되는 하루를 살펴보면 웹을 이용해 처리할수있는 것들이 대분분이다. 메일, 블로그 구독/포스트, 스케줄 개발을 제외하고 보니 웹을 통해 왠만한것들이 다 이루어지고 있다는걸 보면..흐흐 Spanning Sync 는 구글 캘린더와 iCal을 연동시켜주는 툴이다. 몇일 사용하고 있는데 만족스럽다... 아웃룩에 스케줄을 한동안 적어놓고 다녔을때가 있었는데 사무실만 나오면 답답했다. 혹시 아웃룩을 즐겨 쓰시는 분들은 "구글 캘린더-아웃룩 Sync 유틸, gSyncit- oojoo" 를 참고하세요...

Semantic Web 2.0 Conference 후기 생각

정말 많은 사람들이 참석했다. BK식구들 정말 수고하셨어요. 짝짝짝. 한국에서 Web2.0혹은 Semantic Web에 대한 관심이 무척이 높아진걸 느꼈다. -적어도 3여년 전의 OEG에서 주최하던 Ontology 워크샵때의 상황과 비교하면 Tagging에 대한 이야기가 많이 나왔고 (중간에 일땜에 왔다갔다해서리..ㅋ) SIOC를 이용한 Tagging된 정보를 이용한 쓸만한?App들이 소개될것 같다. 그리고, 서비스의 Mashup을 위해서라도 제공되는 서비스 구조는 REST를 이용한 Open API형태로 제공되야 할것 같다. 항상 느끼지만 역시나 온톨로지는 심플해야한다. 어느 스피커의 말처럼 종속관계를 표현해야할 부분에는 그런 온톨로지를 쓰고 그럴 필요가 없는 부분이면 과감히 간단한 온톨로지를 만드는게 당연할것이다. 과제를 위해 만들어진 온톨로지는 재사용이 무척이나 어렵다. (Concept의 수, 계층의 depth, Property, Individual의 수로 온톨로지를 평가하는 과제 책임자들을 위한 온톨로지니 그럴수 밖에 없지...) Social의 중요성과 전망은 모든 스피커들이 얘기했던 만큼 지금까지도 그렇도 한동안 핫이슈가 될것 같다. 학래형이 설명한 마지막 Text기반의 편편했던 Tag Cloud에 FCA를 이용해 Unnamed Thing(이름은 없지만 가만히 보면 집단이 형성됨)을 잡아 이용하려는 아이디어는 참 좋았다. 아무튼 보는 내내 좋은 아이디어가 생기는 시간이였다. 아~ 좋다

Semantic Web & Web2.0 컨퍼런스

이미지
Semantic Web & Web2.0 컨퍼런스 서울대학교 BKLab주최로 코엑스에서 시맨틱웹과 웹2.0에 대한 컨퍼런스가 열립니다. 소주제는 Semantic Desktop과 Social Network이네요. 이번 컨퍼런스에는 아일랜드DERI연수소의 Director인 Stefan Decker교수의 발표도 있습니다. Social Network에 대한 관심이 높아지고 있는 상황에 간단한 프로토타입도 선보일 예정이랍니다. 일시 : 2007년 2월 13일(화) 09:00~17:00 장소 : 코엑스 그랜드 볼륨(1층) 약도 일정 : Time Session Speaker 09:30 - 09:30 Registration 09:30 - 09:50 Welcome Speech 서울대학교 김홍기 교수 09:50 - 10:30 Keynote 1 | Toward Semantic Web 2.0 - Creating Social Semantic Information Spaces DERI 연구소 스테판 데커 교수 10:30 - 11:00 Keynote 2 11:00 - 11:30 Keynote 3 11:30 - 13:00 LUNCH 13:00 - 13:40 Building and Socializing Personal Ontologies on Web 2.0 인하대학교 정재은 연구교수 13:40 - 14:20 OntoFrame-K 서비스 발전 방향, 개인화 & Mesh-up KISTI 정한민 박사 14:20 - 15:00 New Ranking Factors in Social Search : Content Score and User Participation 오피니티에이피 한상기 대표 15:00 - 15:30 Coffee Break 15:30 - 16:10 소셜 태깅과 그 쓰임새 - 소셜 북마킹의 사례 42Blog 프라크(PRAK) 16:10 - 16:50 발표 주제 : 미정 올라웍스 류중희...

트랜드가 트랜드인가 봅니다.

이미지
구글 리더를 사용하는데 처음 보는 링크가 생겼더군요. "trend" 내가 Blog를 구독하는 트랜드가 어떠한지 보여주고 있네요. 어느 블로거가 글을 많이 올리고 있는지도 보이고요. 이미 구글에서는 트렌드를 이용한 서비스 가 있지요. 전세계 사용자를 통해 검색된 단어들을 이용한 서비스죠. 구글의 엄청난 정보를 밑바탕으로 이런 서비스들이 가능하겠죠. 조금은 다른 접근이지만 Paran에서도 Trend서비스 를 하고 있습니다. 트렌드 서비스를 만든 파란 관계자를 만났을 때, 이런 데이터들을 "완전 자동적"으로 마무리된다는 말에 감탄을 했지요. 다른 하나는 제가 몸담고 있는 회사에서 XX과제 결과물로 만든 뉴스 토픽 트렌드서비스가 있습니다. (있긴 하지만 아버지를 아버지라 부를 수 없는 상황이라..^^;;) 2.0단어가 트랜드?라 News2.0이라 이름도 붙였고요. 2개월만에 개발을 마무리했어야하는 상황이라 허겁지겁 만들긴했지만. 그런데로 어르신들 반응이 좋았던 것 같습니다. NER추출기술과 topic detection기술이 사용되었고 UI부분은 MIT SIMILE의 Timeline을 이용했습니다. 2007년도에는 좀더 상세한 서비스 계획을 가지고 있으니 구체적인게 나오면 다시 정식으로 소개하겠습니다.

OS 재설치

XT컴퓨터를 가지고 GW-BASIC배우다 컴퓨터와 멀어지고 몇년이 지났을까? 윈도우95를 처음 만났을 때가 기억난다. 어찌나 생소하던지 정말 이게 내가 배웠던 그놈 맞냐라는 생각도 했었다. 윈도우 하단의 시작줄이 사라져 윈도우를 재설치하던 때가 기억난다. 다행이 그때 가지고 있던 PC는 삼성제품이여서 CD넣고 선택선택만 하면 재설치가 끝났다. (사실 알고보면 마우스 드래를 잘못해서 밑단으로 짜부되어 있었던건데...) 그 후로 윈도우를 얼마나 다시 깔았을까? 대학원 시절, 전산실에서 조교생활을 하면서 단시간에 그렇게도 많은 PC를 지우고 설치한 사람도 얼마 없을꺼다. 그간 사무실에서 쓰던 PC가 말썽을 부려 오늘 윈도우를 재설치했다. 사무실 PC가 주연PC이고, 주연 복구CD로 윈도우에 드라이버까지 단번에 설치가 되더군... 정말 좋아졌다~ 그리고 날이 갈수록 백업할 데이터들이 줄어들더군.. 예전엔 아이콘 파일까지 모아뒀는데...그 시절..ㅋㅋ

주석은 시간이 지나도 알아볼수있게

주석! 주석@ 3~4개를 동시에 개발해야하는 어쩔수없는 상황에 있다보니 이거 조금 보이고 저거 조그 보이기 위해, 이쪽 개발, 저쪽 개발을 하다보니, 흐름이 끊기는거야 둘째라 치고, 이어서 할라치면, 어디서부터 시작해야할지 혼란스럽다. 주석이라도 잘해놨더라면... 종종 내가 쓴 연필글씨를 알아먹지 못해 당황한적은 많지만 키보드로 쓴 주석도 알아보질 못하면 어쩌냐~? ㅡ.,ㅡ

Picasa Web

이미지
사진을 웹에 저장하기: Upload Dailog에서 파일을 선택하고, 선택한 사진에 대해 제목적고 내용적고 업로드 버튼 누른다. 이런 방법이 지금까지 사진 올리는 일반적인 방법었죠, 전 저 방법이 사용자들을 이미 학습시켜버렸다고 생각했죠. (사실 너무 불편하잖아요, 업로드버튼 누르면, 제목을 입력하라는 alert, 동일제목을 올려도 괜찮으면, 줄어드는 번거로운에 감사하죠.) 셔터를 누르면 누를수록 늘어나는 파일들을 올린다는 생각에 깝깝했었죠. Picasa Web은 이런 방법 대신 사진올리고, 저장하고, 배열하고, 메모하는 일련의 작업들을 Picasa라는 툴을 이용해서 한방에 끝내버리네요. 저처럼 사진 찍기는 좋아하나 당췌 관리가 안되는 사람에게 유용할것 같아요. 250M를 제공하는데 1024px로 올리니 꽤나 올라가더군요. 실수로 동영상까지 선택해, alert를 받았는데, 왠지 느낌에 아직은 안될뿐이란 생각이 들더군요. YouTube도 있겠다. 이제 같이 돌겠죠 단 하나 찾을수 없었던 기능은 싸이의 1촌같은 기능이죠. 일정을 공유한 사람들간에는 일정을 열람할수 있는 구글 칼렌더를 생각한다면 있을법도 한데 없더군요. 비슷한 기능으로 Public과 Unlist로 나뉘지만 정확히 말하면, Public 과 Public for someone known album link.로 나뉠거 같네요. 링크를 아는 사람만 보는거죠. ps. 이제 picasa web으로 넘어가나? 요거요거 일촌기능만 있으면 재밌겠는데..ㅋ 속도도 잘나오고~

엄청난 스팸 트랙백이...

오랜만에 와보니 엄청난 양의 스팸 트랙백이 달려있었다. 이 블로그를 너무 잠재웠나부다.. 벌받은거야.. ㅡ.,ㅡ

구글 데스크탐에서 Ctrl 두번누르기

이미지
정신없이 PPT만들고 있는중이였다. 실수로 Ctrl을 두번 눌렀나부다... 그런데 갑자기 이런화면이 나왔다. 오~ 멋지다. 구글 데스탑에서 호출되는 듯하다... 이제 검색을 할때, 웹브라우저를 띄울 번거롬이 하나 줄은듯 하다...

OS X야? 윈도우야?

맥북을 보는 순간 하얀 외모에 깔끔함을 느꼈고, F11키를 누르자 화면들이 정렬되는 모습에 눈알이 돌아갔고, 메모장의 text를 읽어주는데 귀가 신기했지만, 달아오르는 키보드에 손이 땀을 냈고, quicktime, itunes의 메뉴자체에 유료딱지가 있는걸보고 클릭을 고민해보고, 영화 예고가 스트림으로 나오는걸 보고 돈벌이좀 되겠다 싶었다. 나는 아직도 고민중... http://coolpint.egloos.com/m2006-08-01#1398423

확장가능하고 느슨한 온톨로지

분류된 온톨로지를 보고 ARQ를 이용해 속성과 그에 대한 속성값을 가지고 있 특정 인스턴스를 뽑는 작업을 하던중 몇가지 적어본다. 난 제주도를 "섬"이라는 카테고리에 넣었고, 검색하려사는 사람 "휴향지"라는 카테고리에서 찾으려 한다면 '제주도'에 대한 정보는 찾을 수 없다. 예제가 억지스러울수도 있고, 제주도를 둘다, '섬'에도 넣고 '휴향지'에도 넣으면 되고, 또, 제주도가 가지고 있는 특정 속성과 값으로 추출하면되지 않겠냐...는 말도 나올수 있겠다. 이런 저런 꽁수야 많겠지만, '분류화'를 이용하여 개념을 표현하고 실제값(Individual)을 넣고, 추출을 하려하다 보면 그 많은 에로사항?들이 나온다. 온톨로지를 구축하는 방법은 도메인 전문가의 머리속의 개념들을 Top-down으로 만드는 방법이 대표적인것 같다. 하지만, 이런 방법은 재사용되기 응근히~?어렵다. 온톨로지를 보면서 나왔던 많은 좋은 말들?중에 하나가 reusability이지만, 막상 다른 사람이나 단체가 만든 온톨로지를 다시 사용하려 하면 그닥! 쉽지 않다. 큰 온톨로지를 가져와서 부분적으로만 사용할지라도 내가 만들고 있는 Application에서는 적절하지 못하다. 또, 실제값들(individuals)을 넣기 더더욱 어렵다. "'제주도'를 어디에 넣어야 하냐고요~"라고 물어올지도 모른다. 그래서~ 개념들과 Application이 함께 feekbace을 주고 받으며 최대한 loose하고 확장가능한,  Individual에 초점을 맞춘 온톨로지가 어떨까 생각한다. 1. Application의 시나리오 question과 답을 유도할 대표Individual을 만든다. 2. Individual의 속성을 풍부하게 한다. (정확하게 말하면 유니크한 속성으로, 이유는 검색) 3. Classfication을 한다. (최소한 개념수와 레벨, 최대한 loose한 ...

Jena에서 Property 추출시 고려사항

StmtIterator iter = selIndi.listProperties(); 선택된 Individual의 Property들을 보고 싶을 때 listProperties메소드를 사용한다. 문제는 selIndi의 Property들중에 Object값(value)이 Null인 경우에는 가져오질 못한다. 그래서, selIndi의 RDFType을 얻어온다음에 캐스팅하고, Resource ontRes = (Resource) selIndi.getRDFType(); OntClass ontCls = (OntClass)ontRes.as(OntClass.class); 캐스팅된 ontCls의 listDeclaredProperties를 호출하면 말그대로 ontCls에서 선언한 property들만 가져오게 된다. //direct는 sub컨셉에서 지정된 property를 상속받아 가져올지를 체크 Iterator iter = ontCls.listDeclaredProperties(boolean direct); 문제는 name이라는 property도메인을 Person클래스으로 지정하고 Food클래스로도 지정하면 name의 입장에서는 Person과 Food의 anonymous Union클래스를 도메인으로 가지게 되 name이라는 Property는 어디서도 찾을 수 없다.

맥북에 CD빼는 버튼을 만들어 달라!

얼마전 연구실에서 맥북을 샀는데 뽀대에 반해 집에까지 끌고 들어 왔다. 개인적인 사정이 못만지다가 오늘에야 만져봤다. 아직도 백스페이스를 어떻게 누르는지 조차도 모른다. 문제는 그놈의 무지에서 시작, XP가 된다는 말에 무작정 시디를 넣고 시동??뭔가하는 아이콘을 클릭했다. (뭔지 기억조차 나질 않는다.) 엄멈! 윈도우 CD로 부팅이 되면서 맥북이 파란화면에 윈도우 설치를 자꾸 권유했다. 재부팅을 해도 그 화면이다. "시디를 빼버려야지~" 허걱! 시디를 빼는 버튼은 어디에도 없었다... ㅡ.ㅡ;;; 결국 시디를 빼긴 뺐다~ ... ... ... 윈도우 화면에서 ㅡ.,ㅡ;;;