2010-02-08 41 views
2

我想了解更多關於RDF/SPARQL實現內部的知識,但大多數框架(必然)都會因實際性能和實現考慮而變得複雜一些。我很好奇是否有一個適合作爲低級教學工具的「參考」實現?從代碼的角度來看,什麼是RDF/SPARQL實現是最小/最乾淨的?用於教育目的的最簡單的SPARQL實現?

回答

5
  1. 要努力閱讀RDF Primer - 它是很容易。
  2. SPARQL Query Language很容易理解。
  3. Google針對「SPARQL端點」與SPARQL一起玩。你會發現一些(如1234)。
  4. 我有一些資源在我的wiki頁面 - 你可以從它開始。
  5. 有好的books on Semantic Web可用,請向我諮詢更多信息。

不要害怕開始。採取任何RDF引擎,定義一個任務並對其進行編程!我建議你從Sesame開始。

+1

這對於「如何學習RDF/SPARQL?」是一個很好的答案,但那不是我正在尋找的。我對實際的sparql實現的低級實現細節更感興趣。耶拿對此非常有效,但在這一點上相當複雜,imo。 – jsight 2010-02-08 20:36:23

+0

@jsight:嘗試探索芝麻 - 他們有很好的代碼庫。 – 2010-03-01 22:07:24

2

找到一個小而乾淨SPARQL實施將是困難的,因爲語言是相當複雜和表現力,大多數實現(包括我自己在內)添加各種擴展語法的客戶/感知的使用場景的要求。

AFAIK耶拿的文檔提供瞭如何SPARQL實現實際上的功能最全面的描述,但像你說這是相當複雜的。

在剛認識和教學SPARQL讓你的頭部周圍的SPARQL代數來講是非常重要的。如果您瞭解代數,您可以手工制定查詢應該如何轉化爲代數,然後通過手動執行 - 顯然,我不建議在非常小的數據集上進行相對簡單的查詢以外的任何操作。

教的另一個關鍵問題是,語言不是程序,實現可自由重新排序,並在它認爲合適的,前提是不能改變查詢的實際意義任何方式調整查詢。

+1

同意。您可能想要實際閱讀關於關係查詢回答的一些信息。兩者之間的重疊比你期望的要多,一旦你掌握了一些基礎知識,你就會更多地看到像SPARQL代數這樣的東西。至少,瞭解連接如何工作,並記住SPARQL規範。 – Michael 2012-06-07 14:49:47

1

戴夫·貝克特的Redland是開始的好方法。

特點:

雷德蘭是一組提供了資源描述框架(RDF)支持免費軟件C庫。

* Modular, object based libraries and APIs for manipulating the RDF graph, triples, URIs and Literals. 
* Storage for graphs in memory and persistently with Sleepycat/Berkeley DB, MySQL 3-5, PostgreSQL, AKT Triplestore, SQLite, files or URIs. 
* Support for multiple syntaxes for reading and writing RDF as RDF/XML, N-Triples and Turtle Terse RDF Triple Language, RSS and Atom syntaxes via the Raptor RDF Parser Library. 
* Querying with SPARQL and RDQL using the Rasqal RDF Query Library. 
* Data aggregation and recording provenance support with Redland contexts. 
* Language Bindings in Perl, PHP, Python and Ruby via the Redland Bindings package. 
* Command line utility programs rdfproc (RDF), rapper (parsing) and roqet (query). 
* Portable, fast and with no known memory leaks. 
1

從芝麻開始:它很簡單,很適合解析(使用Rio)和三重存儲。 默認安裝分爲兩個Web應用程序:一個用於端點,另一個用於對其進行管理/查詢。請考慮芝麻已經定義了一個稱爲Sail的抽象接口,幾家供應商確實實現了。因此,您可以使用相同的界面,實際上將數據存儲在jena,virtuoso,allegrograph,bigowlim甚至其他graphdb之王(如neo4j)上,通過tinkerpop堆棧。