vocamp seoul2009 sparql

47
SPARQL NHN 시맨틱웹TF 김광섭 [email protected] VoCamp Seoul 2009. 05. 29 2009년 5월 29일 금요일

Upload: kwangsub-kim

Post on 23-Jun-2015

646 views

Category:

Technology


0 download

DESCRIPTION

VoCamp Seoul 2009 - Sparql speaker - kwangsub kim [email protected]

TRANSCRIPT

Page 1: VoCamp Seoul2009 Sparql

SPARQL

NHN 시맨틱웹TF 김광섭[email protected]

VoCamp Seoul 2009. 05. 292009년 5월 29일 금요일

Page 2: VoCamp Seoul2009 Sparql

RDF

SPARQL

Play

2009년 5월 29일 금요일

Page 3: VoCamp Seoul2009 Sparql

RDF

어떤것(Thing)에 대한 개념, 추상하기 위한 데이터 모델

2009년 5월 29일 금요일

Page 4: VoCamp Seoul2009 Sparql

RDF

어떤것(Thing)에 대한 개념, 추상하기 위한 데이터 모델

Subject - Predicate - Object

2009년 5월 29일 금요일

Page 5: VoCamp Seoul2009 Sparql

RDF

어떤것(Thing)에 대한 개념, 추상하기 위한 데이터 모델

Subject - Predicate - Object

2009년 5월 29일 금요일

Page 6: VoCamp Seoul2009 Sparql

RDF

어떤것(Thing)에 대한 개념, 추상하기 위한 데이터 모델

Subject - Predicate - Object

나 - 발표하다 - SPARQL

2009년 5월 29일 금요일

Page 7: VoCamp Seoul2009 Sparql

RDF

웹상에서 표현되는 개념들

어떤것(Thing)에 대한 개념, 추상하기 위한 데이터 모델

Subject - Predicate - Object

나 - 발표하다 - SPARQL

2009년 5월 29일 금요일

Page 8: VoCamp Seoul2009 Sparql

RDF

웹상에서 표현되는 개념들

어떤것(Thing)에 대한 개념, 추상하기 위한 데이터 모델

Subject - Predicate - Object

블로그, 온라인매체 (RSS)

사람, 친구 (FOAF)

나 - 발표하다 - SPARQL

2009년 5월 29일 금요일

Page 9: VoCamp Seoul2009 Sparql

RDF

웹상에서 표현되는 개념들

어떤것(Thing)에 대한 개념, 추상하기 위한 데이터 모델

Subject - Predicate - Object

블로그, 온라인매체 (RSS)

사람, 친구 (FOAF)

나 - 발표하다 - SPARQL

!"#$%&

Semantic Web

Kwangsub

2009. 05. 29

'(')*

+,-./'*

/,'0"1

2009년 5월 29일 금요일

Page 10: VoCamp Seoul2009 Sparql

SPARQLSPARQL

Simple Protocol And RDF Query Language

Pattern Match

SPO (Subject, Predicate, Object)

2009년 5월 29일 금요일

Page 11: VoCamp Seoul2009 Sparql

SPARQL

Graph (Subject, Predicate, Object)안에

매치된 SPO들을 찾기 위한 Query Language

SPARQL

Simple Protocol And RDF Query Language

Pattern Match

SPO (Subject, Predicate, Object)

2009년 5월 29일 금요일

Page 12: VoCamp Seoul2009 Sparql

_:a !"#$%&'

2009년 5월 29일 금요일

Page 13: VoCamp Seoul2009 Sparql

_:a !"#$%&'

_:a - name - ?x

2009년 5월 29일 금요일

Page 14: VoCamp Seoul2009 Sparql

_:a !"#$%&'

_:a - name - ?x

2009년 5월 29일 금요일

Page 15: VoCamp Seoul2009 Sparql

_:a !"#$%&'

_:a - name - ?x

SELECT ?x WHERE{?a name ?x .

}

2009년 5월 29일 금요일

Page 16: VoCamp Seoul2009 Sparql

_:a !"#$%&'

_:a - name - ?x

?x = “김광섭”

SELECT ?x WHERE{?a name ?x .

}

2009년 5월 29일 금요일

Page 17: VoCamp Seoul2009 Sparql

Homework!"#$%"

&'(

)#*+,-./-01,0+-%.2#0

*+0"

"0+-%

&34

/5+*,)67./-01,0+-%.2#0

*+0"

"0+-%

89$"

89$"

/*#5) +::;"))

<=>?

+::;"))

@#2+8-#*

&AB

)#*+,-./-01,0+-%.2#0

*+0"

CD

/*#5)

E"0+*8-2!F"7

+::;")) *+0"

89$"

89$"

89$" *+0"

-*8";")8

-*8";")8

GHIH

JJH

+,"

+,"

+,""0+-%

2009년 5월 29일 금요일

Page 18: VoCamp Seoul2009 Sparql

BASE <http://example.org/> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX foaf: <http://xmlns.com/foaf/0.1/> # This is a relative IRI to BASE above PREFIX ex: <properties/1.0#> SELECT DISTINCT $person ?name $age FROM <http://rdf.example.org/personA.rdf> FROM <http://rdf.example.org/personB.rdf> WHERE{ $person a foaf:Person ;

foaf:name ?name. OPTIONAL { $person ex:age $age } . FILTER (!REGEX(?name, “Bob”))

} ORDER BY ASC(?name) LIMIT 10 OFFSET 20

SPARQL Example

* SPARQL RDF Query Language Reference v1.8 by Dave Beckett.

2009년 5월 29일 금요일

Page 19: VoCamp Seoul2009 Sparql

2009년 5월 29일 금요일

Page 20: VoCamp Seoul2009 Sparql

Terms

Sytax

Pattern

2009년 5월 29일 금요일

Page 21: VoCamp Seoul2009 Sparql

Terms

IRI : URI reference within an RDF graph<http://www.w3.org><http://semantic.naver.com/#Movie><abc.rdf> //base URI에 의존

<>foaf:name //prefix이용해 URI표현, PREFIX 정의

#x00 (X) //UNICODE문자 내에 허용

datatype IRI : datatype URI<http://www.w3.org/2001/XMLSchema#string><http://www.w3.org/2001/XMLSchema#integer>

2009년 5월 29일 금요일

Page 22: VoCamp Seoul2009 Sparql

Plain Literal : lexical form, optionally language tag, @ko“Semantic web” , “김광섭”@ko

Typed Literal : lexical form, datatype URI“30”^^xsd:integer“kwangsub”^^http://www.w3.org/2001/XMLSchema#string

Terms

Blank node : dummy node, node들간의 연결표현용, 무작위생성

_:a, _n06968595988

2009년 5월 29일 금요일

Page 23: VoCamp Seoul2009 Sparql

NameSpace : Vocabulary가 있는 URIhttp://www.w3.org/1999/02/22-rdf-syntax-ns#http://purl.org/dc/elements/1.1/http://xmlns.com/foaf/0.1/

Prefix : URI의 경로를 대표하는 접두어rdf, dc, foaf

Terms

2009년 5월 29일 금요일

Page 24: VoCamp Seoul2009 Sparql

Terms

RDF Graph : A Set of RDF Triples

RDF Triple : S-P-O

Subject : IRI or Blank Node

Predicate : IRI

Object : IRI or Blank Node or Literal

2009년 5월 29일 금요일

Page 25: VoCamp Seoul2009 Sparql

Match : Graph내 SPO가 Query Pattern에 Match되는 상황

Terms

Solutions : Match되어 반환된 결과들

Query Variable : Solutions을 바인딩하기 위한 변수

?x = “김광섭”

_:a !"#$%&'

_:a - name - ?x

?x or $name

2009년 5월 29일 금요일

Page 26: VoCamp Seoul2009 Sparql

Match : Graph내 SPO가 Query Pattern에 Match되는 상황

Terms

Solutions : Match되어 반환된 결과들

Query Variable : Solutions을 바인딩하기 위한 변수

?x = “김광섭”

_:a !"#$%&'

_:a - name - ?x

?x or $name

2009년 5월 29일 금요일

Page 27: VoCamp Seoul2009 Sparql

Simple Query

2009년 5월 29일 금요일

Page 28: VoCamp Seoul2009 Sparql

Simple Query

SELECT ?x WHERE{?a name ?x .

}

2009년 5월 29일 금요일

Page 29: VoCamp Seoul2009 Sparql

Syntax - RDF Term Syntax

IRI

<http://example.org/book/book1>

BASE <http://example.org/book/><book1>

PREFIX book: <http://example.org/book/>book:book1

2009년 5월 29일 금요일

Page 30: VoCamp Seoul2009 Sparql

Literals

“VoCampSeoul”

“VoCampSeoul”@en

“VoCampSeoul”^^xsd:string

1 == “1”^^xsd:integer

true == “true”^^xsd:boolean

1.3 == “1.3”^^xsd:decimal

Syntax - RDF Term Syntax

2009년 5월 29일 금요일

Page 31: VoCamp Seoul2009 Sparql

Query Var

?var or $var

Syntax - RDF Term Syntax

Blank

[ :p “v”]. == [] :p “v”.

_b57 :p “v”. //기본예

Unique Blank - 다른 IRI과 연결용

[ foaf:name ?name ; foaf:mbox <mailto:[email protected]>]

_b11 foaf:name ?name_b11 foaf:mbox <mailto:[email protected]>

//확장예

;은 S에 PO를 연속해서 붙일 수 있다.

,는 SP에 O를 연속해서 붙일 수 있다.

2009년 5월 29일 금요일

Page 32: VoCamp Seoul2009 Sparql

PREFIX, BASE

PREFIX dc: <http://purl.org/dc/elements/1purl.org.1/>SELECT ?titleWHERE { <http://example.org/book/book1> dc:title ?title }

Syntax -Triple Pattern Syntax

PREFIX dc: <http://purl.org/dc/elements/1.1/>PREFIX : <http://example.org/book/>

SELECT $titleWHERE { :book1 dc:title $title }

BASE <http://example.org/book/>PREFIX dc: <http://purl.org/dc/elements/1.1/>

SELECT $titleWHERE { <book1> dc:title ?title }

2009년 5월 29일 금요일

Page 33: VoCamp Seoul2009 Sparql

; ,

?people foaf:name ?name ; foaf:mbox ?mbox .

Syntax ; ,

?people foaf:name ?name .?people foaf:mbox ?mbox .

==

?people foaf:nick "Alice" , "Alice_" .

?people foaf:nick "Alice" . ?people foaf:nick "Alice_" .

==

2009년 5월 29일 금요일

Page 34: VoCamp Seoul2009 Sparql

Basic Graph Pattern

Pattern

Group Graph Pattern

{?people foaf:name "kwangsub".}

{{?people foaf:name "kwangsub".}{?people foaf:email "[email protected]".}

} //두 패턴이 모두 만족해야

{?people foaf:name ?name.FILTER regex (?name, “kw”)

}

Filter

2009년 5월 29일 금요일

Page 35: VoCamp Seoul2009 Sparql

Pattern

Optional Graph Pattern

_:a rdf:type foaf:Person ._:a foaf:name "Alice" ._:a foaf:mbox <mailto:[email protected]> ._:a foaf:mbox <mailto:[email protected]> .

_:b rdf:type foaf:Person ._:b foaf:name "Bob" .

SELECT ?name ?mboxWHERE {

?people foaf:name ?name . OPTIONAL { ?people foaf:mbox ?mbox } }

2009년 5월 29일 금요일

Page 36: VoCamp Seoul2009 Sparql

Pattern

Optional Graph Pattern + FILTER

SELECT ?people ?mboxWHERE {

?people foaf:name ?name . OPTIONAL { ?people foaf:mbox ?mbox . FILTER regex(?mbox, “@gmail”)} } //OPTIONAL을 여러개 추가 가능

Alternative Graph Pattern

SELECT ?people ?mboxWHERE {

{?people foaf:name ?name .}UNION{?people naver:name ?name .}

}//UNON대상 여러가 추가 가능{?people foaf:name ?name . ?people foaf:knows ?name}UNION{? people naver:name ?name. ?people naver:knows ?name}

2009년 5월 29일 금요일

Page 37: VoCamp Seoul2009 Sparql

String Value Constraint

Constraint

Numeric Value Constraint

SELECT ?people, ?nameWHERE {

?people :name ?name FILTER regex(?name, “^kwan”, “i”) } //kwan으로 시작하는 사람

SELECT ?people, ?ageWHERE {

?people :age ?age. FILTER (?age > 30) } //30 이상인 사람

2009년 5월 29일 금요일

Page 38: VoCamp Seoul2009 Sparql

Order

Solution Sequences and Modifiers

SELECT ?s ?p ?oWHERE {

?s ?p ?o } //모든 SPO반환ORDER BY ?o // ???

SELECT ?people, ?nameWHERE {

?people :name ?name}ORDER BY ?name //기본 오름차순 A-Z, DESC(?name)

1. unbound2. blank3. uri4. datatype

우선순위 (asc경우)

2009년 5월 29일 금요일

Page 39: VoCamp Seoul2009 Sparql

Projection

Solution Sequences and Modifiers

SELECT ?sWHERE {

?s ?p ?o } //하나의 칼럼 var로 반환

Distinct

SELECT DISTINCT ?interestWHERE { ?people :interest ?interest. } //중복제거

2009년 5월 29일 금요일

Page 40: VoCamp Seoul2009 Sparql

Offset

Solution Sequences and Modifiers

SELECT ?s ?p ?oWHERE { ?s ?p ?o.}OFFSET 10 //11번째 부터 solutions 반환

LIMIT

SELECT ?s ?p ?oWHERE { ?s ?p ?o.}LIMIT 10 //10개 solutions 반환

SELECT ?s ?p ?oWHERE { ?s ?p ?o.}LIMIT 5OFFSET 10 //함께 사용 가능

2009년 5월 29일 금요일

Page 41: VoCamp Seoul2009 Sparql

SELECT

Query Form

SELECT ?s ?p ?oWHERE { ?s ?p ?o.}

CONSTRUCT //데이터를 입맛에 맞게 조합

CONSTRUCT { ?x vcard:N _:v . _:v vcard:givenName ?gname . _:v vcard:familyName ?fname }WHERE { { ?x foaf:firstname ?gname } UNION { ?x foaf:givenname ?gname } . { ?x foaf:surname ?fname } UNION { ?x foaf:family_name ?fname } . }

2009년 5월 29일 금요일

Page 42: VoCamp Seoul2009 Sparql

ASK

Query Form

PREFIX foaf: <http://xmlns.com/foaf/0.1/>ASK { ?x foaf:name "Alice" }

DESCRIBE

DESCRIBE <http://example.org/>

2009년 5월 29일 금요일

Page 43: VoCamp Seoul2009 Sparql

2009년 5월 29일 금요일

Page 44: VoCamp Seoul2009 Sparql

Let’s Play!"#$%"

&'(

)#*+,-./-01,0+-%.2#0

*+0"

"0+-%

&34

/5+*,)67./-01,0+-%.2#0

*+0"

"0+-%

89$"

89$"

/*#5) +::;"))

<=>?

+::;"))

@#2+8-#*

&AB

)#*+,-./-01,0+-%.2#0

*+0"

CD

/*#5)

E"0+*8-2!F"7

+::;")) *+0"

89$"

89$"

89$" *+0"

-*8";")8

-*8";")8

GHIH

JJH

+,"

+,"

+,""0+-%

2009년 5월 29일 금요일

Page 45: VoCamp Seoul2009 Sparql

Homeworks

- [email protected] 메일을 사용하는 사람들?- kwangsub과 동일한 관심을 같은 사람들?- 나이가 50이하인 사람들?- 같은 동네에 사는 사람들?

- "@gmai.com"을 사용하는 사람들  FILTER(?mail, "@gmail.com");- 20세 이하의 사람들의 관심 주제는?

- kwangsub이 아는 사람중에 대전에 사는 사람?

2009년 5월 29일 금요일

Page 46: VoCamp Seoul2009 Sparql

링크http://delicious.com/kwangsub.kim/%23VoCampSeoul2009

http://groups.google.com/group/semanticwebstudy?hl=ko

2009년 5월 29일 금요일

Page 47: VoCamp Seoul2009 Sparql

감사합니다.

2009년 5월 29일 금요일