티스토리 뷰
파일로 존재하는 RDF데이터를 로딩하여 그래프에 담은 뒤, 그래프 내에서 여러가지 탐색을 사용해 본다.
그래프에 담긴 데이터를 SPARQL을 사용하여 질의하여 결과를 도출해 본다.
작성자 : 허홍수
e-mail : su4620@gmail.com
blog : http://joyhong.tistory.com
e-mail : su4620@gmail.com
blog : http://joyhong.tistory.com
탐색¶
파일 로딩¶
In [1]:
from rdflib import Graph, RDF, URIRef
g = Graph()
g.parse("./sample_result.ttl", format='turtle')
Out[1]:
그래프에 담긴 트리플 수¶
In [2]:
len(g)
Out[2]:
그래프 내 데이터 탐색¶
In [3]:
# for s, p, o in g: # 전체
for s, p, o in list(g)[:10]: # 처음 10개만
print(f"{s} \t{p} \t{o}")
predicate가 rdf:type인 트리플들만 탐색¶
In [4]:
for s, p, o in list(g.triples((None, RDF.type, None)))[:10]:
print(f"{s} \t{p} \t{o}")
여러 가지 탐색 방식¶
주어부 탐색 - 술어가 rdf:type 이고, 목적어는 아무거나(None)¶
In [5]:
for _type in list(g.subjects(RDF.type, None))[:10]:
print(_type)
술어부 탐색 - 주어가 http://joyhong.tistory.com/resource/h_272 이고, 목적어는 무관¶
In [6]:
subject = URIRef('http://joyhong.tistory.com/resource/h_272')
In [7]:
for _pred in g.predicates(subject, None):
print(_pred)
목적어 탐색¶
In [8]:
for _obj in g.objects(subject, None):
print(_obj)
목적어가 URIRef인 리소스인 경우 그 목적어를 주어로 하고 있는 모든 트리플 탐색¶
In [9]:
for s, p, o in list(g.triples((URIRef('http://joyhong.tistory.com/resource/h_78'), None, None))):
print(f"{s} \t{p} \t{o}")
if type(o)==URIRef:
for ss, pp, oo in g.triples((o, None, None)):
print(f"{ss} \t{pp} \t{oo}")
SPARQL¶
SELECT 질의¶
In [10]:
qres = g.query("""
SELECT ?s ?p ?o
WHERE {
?s ?p ?o .
} LIMIT 10
""")
for row in qres:
print(f"{row[0]}\t{row[1]}\t{row[2]}")
In [11]:
qres = g.query("""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT *
WHERE {
?subject rdfs:label ?label.
?subject foaf:homepage ?homepage.
filter(regex(?label, "서울", "i" ))
}
""")
for row in qres:
print(f"{row[0]}\t{row[1]}\t{row[2]}")
ASK 질의¶
In [12]:
qres = g.query("""
ASK {<http://joyhong.tistory.com/resource/h_273> ?p ?po}
""")
# for row in qres:
print(bool(qres))
SPARQL 로 특정 병원 찾은 후 홈페이지 열기¶
In [13]:
from IPython.display import IFrame
def window_open(url):
IFrame(src=url, width='100%', height='500px')
In [14]:
qres = g.query("""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?page
WHERE {
?subject rdfs:label '삼성서울병원'.
?subject foaf:page ?page.
}
""")
for row in qres:
url = row[0]
IFrame(src=url, width='100%', height='500px')
Out[14]:
In [ ]:
'N:::만지작 거리기' 카테고리의 다른 글
N_19. SPARQLWrapper로 SPARQL Endpoint 사용하기 (0) | 2021.09.10 |
---|---|
N_18.Fuseki로 SPARQL Endpoint 구성 (0) | 2021.09.09 |
N_16. 파이썬으로 RDF 생성하기 (0) | 2021.09.08 |
N_15. TBC에서 RDF 파일을 TDB에 임포트하기 (0) | 2019.12.11 |
N_14. CONSTRUCT 를 이용한 RDF 파일 생성 (0) | 2019.12.10 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- pyvis
- 사이퍼
- Ontology
- property graph
- RDF 변환
- Linked Data
- Knowledge Graph
- 트리플
- 온톨로지
- sparql
- LOD
- cypher
- RDF
- 그래프 데이터베이스
- 스프링부트
- Thymeleaf
- Neo4j
- rdfox
- TopBraid Composer
- stardog
- 장고
- 트리플 변환
- TBC
- networkx
- neosemantics
- 지식그래프
- 지식 그래프
- django
- 타임리프
- TDB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함