III.4 Mở rộng các tập dữ liệu từ các nguồn công cộng

Một phần của tài liệu BIỂU DIỄN NGỮ NGHĨA BẰNG RDF VÀ ỨNG DỤNG VÀO LẬP TRÌNH SEMATIC WEB (Trang 62)

PHẦN III. Ứng dụng RDF vào lập trình semantic web

III.4 Mở rộng các tập dữ liệu từ các nguồn công cộng

khi liên kết đến các uri chuyên biệt. Một trong những cơ sở dữ liệu tốt nhất được sử dụng để cập nhật thông tin về công ty là Crunchbase, nó được tạo ra và cập nhật thông tin bởi cộng đồng người sử dụng nó. Chúng ta sẽ sử dụng nó để cập nhật thêm thông tin cho công ty trong kho dữ liệu của chúng ta.

Ví dụ, ứng với Crunchbase keys là metawebtechnologies chúng ta sẽ có uri truy xuất dữ liệu của nó ra dạng JSON như sau, khi bõ vào trình duyệt

Hình 3-8: kết quả truy xuất tìm thông tin về công ty trên Crunchbase dựa vào keys

Chúng ta sẽ thực hiện việc cập nhật này bằng code tự tạo trong module crunchbase_data.py( kèm trong source code)

from rdflib import ConjunctiveGraph

from rdflib import Namespace, BNode, Literal, RDF, URIRef from pysesame import connection

import urllib

from simplejson import loads

# Connecion to Sesame

con=connection('http://localhost:8180/openrdf-sesame/')

con.use_repository('joblistings')

con.addnamespace('rdfs','http://www.w3.org/2000/01/rdf-schema#')

JB = Namespace("http://semprog.com/schemas/jobboard#")

DC = Namespace("http://purl.org/dc/elements/1.1/")

cg.bind('dc',DC)

cg.bind('jobboard',JB)

cg.bind('foaf',FOAF)

# tìm uri seeAlso có chứa từ crunchbase

res=con.query('select ?id ?url where {?id rdfs:seeAlso ?url . FILTER regex(?url, "crunchbase")}')

# Loop over the results

for row in res:

company=URIRef(row['id']['value']) url=row['url']['value']

data=urllib.urlopen(url).read() # load nội dung dạng JSON

record=loads(data)

# Bổ sung thông tin location vào company được lấy từ nội dung truy xuất

for loc in record['offices']:

if loc['city'] and loc['state_code']:

cityid='%s_%s' % (loc['city'].lower().replace(' ','_'),loc['state_code'].lower())

cg.add((company,JB['location'],JB[cityid]))

# Bổ sung home page

cg.add((company,FOAF['homepage'],Literal(record['homepage_url'])))

# Add funding rounds

for fr in record['funding_rounds']: round=BNode()

cg.add((company,JB['funding_round'],round))

cg.add((round,JB['amount'],Literal(fr['raised_amount']))) cg.add((round,DC['date'], Literal(str(fr['funded_year']))))

Sau khi thực thi module này chúng ta sẽ có tập tất cả các thông tin bổ sung ứng với mỗi company trong đồ thị mới là cg (đồ thị này chỉ cập nhật thông tin company có trong kho sesame và thông tin bổ sung.

Các thông tin mới đã được cập nhật trên hệ thống của chúng ta như hình 3-9

Hình 3-9: thông tin bổ sung đã được cập nhật.

Cập nhật tương tự cho thông tin finance trong yahoo_finance_update.py.

Nếu bạn đầu chúng ta không đưa thông tin crunchbase vào kho dữ liệu của chúng ta, thì chúng ta có thể cập nhật chúng dựa trên dịch vụ của freebase dưới namespace tên gọi là metaweb, như ví dụ trong freebase_companies.py.

III.5 Tạo màn hình theo chức năng

Một phần của tài liệu BIỂU DIỄN NGỮ NGHĨA BẰNG RDF VÀ ỨNG DỤNG VÀO LẬP TRÌNH SEMATIC WEB (Trang 62)

Tải bản đầy đủ (DOC)

(72 trang)
w