2012-08-31 30 views

Trả lời

8

Cách đơn giản nhất để tải dbpedia vào Neo4j là sử dụng thư viện dbpedia4neo. Đây là một thư viện Java, nhưng bạn không cần biết bất kỳ Java nào vì tất cả những gì bạn cần làm là chạy tệp thực thi.

Bạn có thể viết lại điều này trong JRuby nếu muốn, nhưng Ruby thông thường sẽ không hoạt động vì nó dựa trên Blueprints, một thư viện Java không tương đương với Ruby.

Dưới đây là hai tệp chính cung cấp quy trình tải.

  1. https://github.com/oleiade/dbpedia4neo/blob/master/src/main/java/org/acaro/dbpedia4neo/inserter/DBpediaLoader.java
  2. https://github.com/oleiade/dbpedia4neo/blob/master/src/main/java/org/acaro/dbpedia4neo/inserter/TripleHandler.java

Đây là một description of what's involved.

Bản thiết kế Blueprint đang dịch dữ liệu RDF thành biểu diễn biểu đồ. Để hiểu những gì đang xảy ra dưới mui xe, hãy xem Blueprints Sail Ouplementation:

Sau khi bạn tải xuống tệp kết xuất dbpedia, bạn có thể xây dựng thư viện Java dbpedia4neo và chạy mà không sửa đổi mã Java.

Thứ nhất, nhân bản ngã ba của oleiade của kho GitHub và thay đổi vào thư mục dbpedia4neo:

$ git clone https://github.com/oleiade/dbpedia4neo.git 
$ cd dbpedia4neo 

(ngã ba Oleiade bao gồm một bản cập nhật Blueprints nhỏ mà không sail.initialize(); Xem https://groups.google.com/d/msg/gremlin-users/lfpNcOwZ49Y/WI91ae-UzKQJ).

Trước khi tạo, bạn cần cập nhật pom.xml để sử dụng nhiều phiên bản Blueprint hiện tại và kho lưu trữ Blueprints hiện tại (Sonatype).

Để làm điều này, mở pom.xml và ở phía trên cùng của phần dependencies, thay đổi tất cả các phiên bản TinkerPop Blueprints 0.6-0.9.

Trong khi bạn đang ở trong tập tin, thêm kho Sonatype đến phần repositories vào cuối file:

<repository> 
    <id>sonatype-nexus-snapshots</id> 
    <name>Sonatype Nexus Snapshots</name> 
    <url>https://oss.sonatype.org/content/repositories/releases</url> 
</repository> 

Lưu tập tin và sau đó xây dựng nó bằng cách sử maven:

$ mvn clean install 

Điều này sẽ tải xuống và cài đặt tất cả các phụ thuộc cho bạn và tạo một tệp jar trong thư mục target.

Để tải dbpedia, maven sử dụng để chạy các thực thi:

$ mvn exec:java \ 
    -Dexec.mainClass=org.acaro.dbpedia4neo.inserter.DBpediaLoader \ 
    -Dexec.args="/path/to/dbpedia-dump.nt" 

Các bãi dbpedia là lớn vì vậy đây sẽ mất một thời gian để tải.

Bây giờ các dữ liệu được nạp, bạn có thể truy cập vào đồ thị bằng một trong hai cách sau:

  1. Sử dụng JRuby và API Blueprints-Neo4j trực tiếp.
  2. Sử dụng Ruby thường xuyên và máy chủ REST Rexster REST, tương tự như Máy chủ Neo4j ngoại trừ việc nó hỗ trợ nhiều cơ sở dữ liệu biểu đồ.

Để biết ví dụ về cách tạo ứng dụng khách Rexster, hãy xem Bóng đèn, khung Python tôi đã viết hỗ trợ cả Neo4j Server và Rexster.

Một cách tiếp cận để tất cả điều này sẽ được xử lý dbpedia RDF đổ tập tin trong Ruby, viết ra các nút và các mối quan hệ vào một tập tin CSV, và sử dụng Neo4j batch importer để tải. Nhưng điều này sẽ yêu cầu bạn dịch thủ công dữ liệu RDF vào các mối quan hệ Neo4j.

3

Cách tôi xem, bạn có hai tùy chọn.

  1. Bạn có thể hoặc là cố gắng để thực hiện một cách tiếp cận như this one chính xác, hoặc ngã ba the repo đằng sau phương pháp này (hay cách khác như nó) và mở rộng/sửa chữa nó để phù hợp với mục đích của bạn.

  2. Tự làm, từ đầu. Đây là cách tiếp cận chung:

Phân tích tập dữ liệu dbpedia của bạn thành định dạng phù hợp với phương pháp chèn neo4j. Có các thư viện tồn tại như openRDF tồn tại để xử lý dữ liệu. Trừ khi bạn có kế hoạch dành thời gian nghiên cứu phù hợp với nhu cầu của bạn nhất, giải pháp hiện tại mà tôi đã liên kết ở trên đã triển khai thư viện này.

Sau đó, chèn dữ liệu đã định dạng vào db neo4j của bạn. Một phương pháp để thực hiện điều này là thông qua thành phần Batch Insertion của neo4j. Lưu ý rằng cơ sở này, như chúng tuyên bố, là dành cho nhập khẩu ban đầu (vì nó không phải là chủ đề an toàn và không giao dịch, nói cách khác, không tuân thủ ACID). Vì vậy, điều này thực sự phụ thuộc vào trường hợp sử dụng của bạn.

2 xu của tôi là bạn sử dụng thứ gì đó đã tồn tại ở đó trừ khi chức năng này là cốt lõi của những gì bạn đang phát triển. Vì đó là một cái gì đó sẽ là một nỗi đau để xây dựng, và thậm chí nhiều hơn một nỗi đau để xây dựng một cái gì đó chạy hiệu quả.

+0

Bạn có câu hỏi cụ thể hơn không? – anxiety

Các vấn đề liên quan