23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
RDF 형태의 데이터는 주어-술어-목적어 이렇게 트리플 구조를 가지고 있기 때문에 이들을 연결하면 그래프 형태로 표현이 됩니다.
이러한 특징으로 인해 그래프 형태로 visualization이 가능한데, 그래프로 그리기 위한 여러가지 라이브러리들이 존재합니다.
그 중에서 간단하게 사용할 수 있는 graph-notebook 이라는 라이브러리가 있습니다.
graph-notebook은 그래프 데이터베이스에 질의하여 결과를 가져올 수 있는데
SPARQL,Gremlin, Cypher 언어를 지원합니다.
이 중에서 우리는 RDF를 사용하기 때문에 SPARQL언어를 사용하여 SPARQL Endpoint에 질의하여 결과를 그래프로 표현해보도록 하겠습니다.
SPARQL은 로컬에 구성한 Endpoint로 질의를 하거나 다른 공개된 endpoint를 활용할 수 있습니다.
사용하는 라이브러리graph-notebook(https://pypi.org/project/graph-notebook)
필수적으로 설치가 되어 있어야 하는 라이브러리
Tornado, RDFLib (보다 자세한 내용은 위 링크에서 확인하세요)
제일 먼저 대상이 되는 endpoint 주소와 포트, 그리고 여러 정보를 설정합니다.대상 endpoint 주소는 (제 기준)http://localhost:3030/publicdata/query 입니다.수정이 필요한 곳 (host, port, sparql:path)
%%graph_notebook_config
{
"host":"localhost",
"port":3030,
"auth_mode":"DEFAULT",
"iam_credentials_provider_type":"ROLE",
"load_from_s3_arn":"",
"ssl": false,
"aws_region":"us-east-1",
"sparql": {
"path": "publicdata/query"
}
}set notebook config to:
{
"host": "localhost",
"port": 3030,
"auth_mode": "DEFAULT",
"load_from_s3_arn": "",
"ssl": false,
"aws_region": "us-east-1",
"sparql": {
"path": "publicdata/query"
}
}
<graph_notebook.configuration.generate_config.Configuration at 0x7ff68656adf0>쥬피터 화면을 넒게 쓰기 원하면 아래를 실행
from IPython.core.display import display, HTML
display(HTML("<style>.container { width:100% !important; }</style>"))%%sparql --expand-all
select *
where{
?s ?p ?o.
} LIMIT 30보통 실행 결과는 Table, Graph, JSON, Query Metadata 이렇게 4개의 탭이 나타납니다.
위의 코드에 대한 결과는 아래와 같습니다.
만약 로컬컴퓨터에 SPARQL 엔드포인트가 없거나 외부의 엔드포인트를 사용하는 경우에도 호스트 지정만 변경해주면 사용이 가능합니다.
아래의 예시에서는 dbpedia에서 제공하는 엔드포인트에 질의를 하여 결과를 가져오는 예시입니다.
%%graph_notebook_config
{
"host":"dbpedia.org",
"port":443,
"auth_mode":"DEFAULT",
"iam_credentials_provider_type":"ROLE",
"load_from_s3_arn":"",
"ssl": true,
"aws_region":"us-east-1"
}set notebook config to:
{
"host": "dbpedia.org",
"port": 443,
"auth_mode": "DEFAULT",
"load_from_s3_arn": "",
"ssl": true,
"aws_region": "us-east-1",
"sparql": {
"path": "sparql"
}
}
<graph_notebook.configuration.generate_config.Configuration at 0x7ff689946160>%%sparql --expand-all
prefix dbo: <http://dbpedia.org/ontology/>
select ?s ?p ?o
where{
?s dct:subject <http://dbpedia.org/resource/Category:Singers_from_Seoul>.
?s ?p ?o .
filter(?p!=rdf:type)
} LIMIT 500이번에는 아이유에 대한 URI를 통해 해당 정보를 찾아보겠습니다.
%%sparql --expand-all
SELECT *
WHERE {
?s ?p ?o.
FILTER(?s=<http://dbpedia.org/resource/IU_(singer)>)
}정보가 많아서 그래프 형식으로 보기에는 좀 불편하겠네요..
이럴 때 다른 형식의 결과를 보는게 나을 것 같습니다.
이상으로 쥬피터 환경에서 SPARQL을 활용하는 방법에 대해 짧게 소개하였습니다.
참고로 원하는 SPARQL을 작성하고 결과를 받아올 수는 있지만 그래프로 표현되지 않는 형식일 때는 그래프 탭이 나타나지 않습니다.
%%sparql --expand-all
SELECT ?s ?label ?bdate (group_concat(?comt) as ?cmt)
WHERE {
?s dct:subject dbc:Singers_from_Seoul.
?s rdfs:label ?label.
FILTER(lang(?label)='ko')
?s dbo:birthDate ?bdate.
?s rdfs:comment ?comt.
} GROUP BY ?s ?label ?bdate
LIMIT 100
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.