2017-01-31 27 views
0

編輯:使這個問題更具體。請使用您選擇的工具在Linux上本地提供通過.ttl文件執行sparql查詢的「hello world」示例。用於SPARQL和TTL的CLI工具ala csvsql,n3,... files - 用於教學目的的Hello World示例

csvsql允許通過SQL直接(即,無需導入)查詢.csv文件;例如:

$ csvsql --query "select m.usda_id, avg(i.sepal_length) as 
mean_sepal_length from iris as i join irismeta as m on (i.species = 
m.species) group by m.species" examples/iris.csv examples/irismeta.csv 

我很想有SPARQL超過Turtle .ttl或其他典型的RDF文件來查詢類似的能力。

如何爲SPARQL和海龜或類似文件實現類似的「一次性」「直接查詢」功能? (例如,將給定文件加載到例如運行blazegraph實例的內存中的小腳本,並且運行查詢返回結果並撤回內存中的內容;或者可以使用librdf,例如Rasqal/RedlandNeo4jany other SPARQL implementation-最好是沒有運行後臺實例,一次性,KISS

恕我直言,這樣的工具將是偉大的業餘愛好者和愛好者誰可能想玩存儲在三倍數據和查詢它沒有啓動完整的服務器。這對教育目的也是非常有益的。

你能否提供具體的例子,由snippet支持,展示如何做到這一點? (在Linux上本地)

+0

阿帕奇耶拿或RDF4J有CLI 。 – AKSW

回答

1

Rasqal的命令行查詢工具roqet這樣做;見http://librdf.org/rasqal/roqet.html

或在線http://triplr.org/query

編輯與例如它的工作原理和包:

Rasqal例如包:

讓我們嘗試執行的 「hello world」查詢來自:https://wiki.blazegraph.com/wiki/index.php/Quick_Start教程。

下面是例子data.ttl文件:

PREFIX : <http://blazegraph.com/> 
PREFIX schema: <http://schema.org/> 

:systap a schema:Organization ; 
     schema:owns :blazegraph . 
:blazegraph a schema:Product ; 
      schema:brand :systap; 
      :productOf <http://systap.com/>; 
      :implements <http://rdf4j.org>,<http://blueprints.tinkerpop.com> . 

而例如 「Hello World」 的SPARQL查詢:

$ roqet -i sparql -e 'SELECT * WHERE { <http://blazegraph.com/blazegraph> ?p ?o }' -D data.ttl 
roqet: Running query 'SELECT * WHERE { <http://blazegraph.com/blazegraph> ?p ?o }' 
roqet: Query has a variable bindings result 
row: [p=uri<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>, o=uri<http://schema.org/Product>] 
row: [p=uri<http://schema.org/brand>, o=uri<http://blazegraph.com/systap>] 
row: [p=uri<http://blazegraph.com/productOf>, o=uri<http://systap.com/>] 
row: [p=uri<http://blazegraph.com/implements>, o=uri<http://rdf4j.org>] 
row: [p=uri<http://blazegraph.com/implements>, o=uri<http://blueprints.tinkerpop.com>] 
roqet: Query returned 5 results 

甚至更​​通用

$ roqet -i sparql -e 'SELECT * WHERE { ?s ?p ?o }' -D data.ttl | xsel -b 
roqet: Running query 'SELECT * WHERE { ?s ?p ?o }' 
roqet: Query has a variable bindings result 
row: [s=uri<http://blazegraph.com/systap>, p=uri<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>, o=uri<http://schema.org/Organization>] 
row: [s=uri<http://blazegraph.com/systap>, p=uri<http://schema.org/owns>, o=uri<http://blazegraph.com/blazegraph>] 
row: [s=uri<http://blazegraph.com/blazegraph>, p=uri<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>, o=uri<http://schema.org/Product>] 
row: [s=uri<http://blazegraph.com/blazegraph>, p=uri<http://schema.org/brand>, o=uri<http://blazegraph.com/systap>] 
row: [s=uri<http://blazegraph.com/blazegraph>, p=uri<http://blazegraph.com/productOf>, o=uri<http://systap.com/>] 
row: [s=uri<http://blazegraph.com/blazegraph>, p=uri<http://blazegraph.com/implements>, o=uri<http://rdf4j.org>] 
row: [s=uri<http://blazegraph.com/blazegraph>, p=uri<http://blazegraph.com/implements>, o=uri<http://blueprints.tinkerpop.com>] 
roqet: Query returned 7 results 
+0

感謝您的編輯。我在https://www.dajobe.org/talks/201003-semweb-sxsw/的演講中有更多的命令行示例,例如使用'-r csv'生成CSV結果 – dajobe

1

特定的Apache Jena命令是sparql

這些命令來自http://apache.org/dist/jena/binaries/的二進制下載。解壓,並有bin/bat/腳本的目錄從命令行運行。

+0

我試圖在Apache Jena文檔中找到它。我只找到ARQ命令行實用程序:https://jena.apache.org/documentation/query/cmds.html。它看起來不像你描述的那樣。你能鏈接到文檔中的相關點嗎? –

+0

我有東西。這是你的意思:https://jena.apache.org/tutorials/sparql_query1.html? –

+0

我不是java專家。這個東西在解包後不運行:'apache-jena-3.1.1 $ ./bin/sparql --help 錯誤:無法找到或加載主類vsoon.apache-jena.apache-jena-3.1.1.jena -log4j.properties' –