0

编辑:使这个问题更具体。请提供使用您选择的工具在 Linux 上本地对 .ttl 文件执行 sparql 查询的“hello world”示例。

csvsql允许.csv通过 SQL 直接查询文件(即,无需导入);例如:

$ 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

我希望有类似的能力在Turtle或其他典型的 RDF 文件上使用SPARQL进行查询。.ttl

如何为SPARQL和 Turtle 或类似文件实现类似的“一次性”“直接查询”功能?(例如,将给定文件加载到内存中的小脚本,例如,运行blazegraph实例并运行查询返回结果并撤回内存中的内容;或者可能使用Rasqallibrdf / RedlandNeo4j任何其他 SPARQL 实现的东西 - 最好是一些东西无需运行后台实例,一次性,KISS )

恕我直言,这样的工具对于可能想要以三元组存储数据并在不启动完整服务器的情况下查询数据的爱好者和爱好者来说非常有用。这对教育目的也非常有益。

您能否提供由代码段支持的具体示例,展示如何执行此操作?(在 Linux 上本地)

4

2 回答 2

2

Rasqal 的命令行查询工具就是这样做的roqet;见http://librdf.org/rasqal/roqet.html

或在线访问http://triplr.org/query

用示例编辑它的工作原理和包装:

Rasqal 示例包:

让我们尝试从https://wiki.blazegraph.com/wiki/index.php/Quick_Start教程执行“hello world”查询。

这是示例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
于 2017-02-01T02:51:32.283 回答
1

具体的 Apache Jena 命令是sparql.

这些命令来自http://apache.org/dist/jena/binaries/. 解压后bin/bat/可以从命令行运行脚本目录。

于 2017-01-31T14:56:31.467 回答