有没有一种方法可以让我直接编写RDF数据并通过SPARQL进行查询

有没有一种方法可以让我直接编写RDF数据并通过SPARQL进行查询,sparql,rdf,semantic-web,owl,fuseki,Sparql,Rdf,Semantic Web,Owl,Fuseki,我正在练习一些SPARQL查询和特性,我的问题是,每当我获得新的RDF数据时,我都会去protoge,构建与这些RDF相关的类、关系和实例,然后探索这些数据,然后将其导入Fuseki中的数据集,然后查询它。 如果我的数据出错,我需要重复整个过程 它变得单调和耗时,这就是为什么我迫切需要问你是否有一个地方(工具或fuseki支持插件…或任何东西…)可以直接编写简单的rdf数据,然后从fuseki查询它 例如,我想写的数据非常简单,如下所示: @prefix dei: <http://www.

我正在练习一些SPARQL查询和特性,我的问题是,每当我获得新的RDF数据时,我都会去protoge,构建与这些RDF相关的类、关系和实例,然后探索这些数据,然后将其导入Fuseki中的数据集,然后查询它。 如果我的数据出错,我需要重复整个过程

它变得单调和耗时,这就是为什么我迫切需要问你是否有一个地方(工具或fuseki支持插件…或任何东西…)可以直接编写简单的rdf数据,然后从fuseki查询它

例如,我想写的数据非常简单,如下所示:

@prefix dei: <http://www.warsaw.pl/ > .
    
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
    
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
    
dei:~rcardish/
    
      rdf:type foaf:Person ;
    
      foaf:name “Rafa Cardish" ;
    
 foaf:member <http://www.warsaw.pl> ;
    
      rdfs:SeeAlso <http://www.linkedin.com/in/rafacardish>
@prefix : <http://stackoverflow.com/a/35854800/1281433/>

<http://stackoverflow.com/users/1281433/> :hasUserName "Joshua Taylor" .
$ sparql --query query.rq --data data.n3
@前缀dei:。
    
@前缀rdf:。
    
@前缀foaf:。
    
迪:~r卡迪什语/
    
rdf:类型foaf:个人;
    
foaf:名称“拉法卡迪什”;
    
foaf:成员;
    
rdfs:另请参见
但是,即使是那个简单而小的rdf,在我目前的方式中也会占用我时间

谢谢你的帮助

更新1 现在我可以这样做,将数据加载到fuseki中

./fuseki服务器--file=/Users/bla-bla-bla/rdfData.rdf/testdataset

这是数据

@prefix dc:   <http://purl.org/dc/elements/1.1/> .
@prefix :     <http://example.org/book/> .
@prefix ns:   <http://example.org/ns#> .

:book1  dc:title     "SPARQL Tutorial" .
:book1  ns:price     42 .
:book1  ns:discount  0.2 .

:book2  dc:title     "The Semantic Web" .
:book2  ns:price     23 .
:book2  ns:discount  0.25 .
@前缀dc:。
@前缀:。
@前缀ns:。
:book1 dc:标题“SPARQL教程”。
:book1-ns:price 42。
:book1 ns:折扣0.2。
:book2dc:title“语义网”。
:book2-ns:price 23。
:book2 ns:折扣0.25。
但我不知道如何查询它,因为当我运行Fuseki时,我会进入查询,我必须选择一个数据集,但这里没有显示在下拉列表中的数据集

更新2
现在它开始工作了,我的错误是,当我创建它时,文件扩展名是.ttl.rdf。ttl单独工作时

你可以使用Jena的命令行工具轻松运行SPARQL查询。在Jena发行版中,有一个带有--query--data标志的SPARQL可执行文件。一旦你有了rdf文件(如果您是手工编写的,我建议使用Turtle/N3序列化,并为您的文件提供.ttl或.N3后缀),这样就很容易运行查询。例如,当我有一个data.N3文件时,如下所示:

@prefix dei: <http://www.warsaw.pl/ > .
    
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
    
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
    
dei:~rcardish/
    
      rdf:type foaf:Person ;
    
      foaf:name “Rafa Cardish" ;
    
 foaf:member <http://www.warsaw.pl> ;
    
      rdfs:SeeAlso <http://www.linkedin.com/in/rafacardish>
@prefix : <http://stackoverflow.com/a/35854800/1281433/>

<http://stackoverflow.com/users/1281433/> :hasUserName "Joshua Taylor" .
$ sparql --query query.rq --data data.n3
---------------------------------------------
|使用者|
=============================================
|  |
---------------------------------------------

您可以使用Jena的命令行工具轻松运行SPARQL查询。在Jena发行版中,有一个带有--query--data标志的SPARQL可执行文件。一旦您拥有了RDF文件(如果您是手工编写的,我建议使用Turtle/N3序列化,并为您的文件提供.ttl或.N3后缀),这样就很容易运行查询。例如,当我有一个data.N3文件时,如下所示:

@prefix dei: <http://www.warsaw.pl/ > .
    
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
    
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
    
dei:~rcardish/
    
      rdf:type foaf:Person ;
    
      foaf:name “Rafa Cardish" ;
    
 foaf:member <http://www.warsaw.pl> ;
    
      rdfs:SeeAlso <http://www.linkedin.com/in/rafacardish>
@prefix : <http://stackoverflow.com/a/35854800/1281433/>

<http://stackoverflow.com/users/1281433/> :hasUserName "Joshua Taylor" .
$ sparql --query query.rq --data data.n3
---------------------------------------------
|使用者|
=============================================
|  |
---------------------------------------------

您可以使用命令行工具(例如)或编写简单的脚本来加载RDF并在其上运行SPARQL查询(例如):

1) 使用Redland:
roqet query.rq-D data.ttl-r json

使用示例数据返回,通过查询
?s dc:title?title
运行它:

"bindings" : [
  {
    "s" : { "type": "uri", "value": "http://example.org/book/book1" },
    "title" : { "type": "literal", "value": "SPARQL Tutorial" }
  },
  {
    "s" : { "type": "uri", "value": "http://example.org/book/book2" },
    "title" : { "type": "literal", "value": "The Semantic Web" }
  }
]
JSON是一种结果格式,但您也可以获取CSV等

另见:

2) 也是一种非常紧凑的方法(在Python中):

结果:

http://example.org/book/book1 : SPARQL Tutorial
http://example.org/book/book2 : The Semantic Web

您可以使用命令行工具(例如)或编写简单的脚本来加载RDF并在其上运行SPARQL查询(例如):

1) 使用Redland:
roqet query.rq-D data.ttl-r json

使用示例数据返回,通过查询
?s dc:title?title
运行它:

"bindings" : [
  {
    "s" : { "type": "uri", "value": "http://example.org/book/book1" },
    "title" : { "type": "literal", "value": "SPARQL Tutorial" }
  },
  {
    "s" : { "type": "uri", "value": "http://example.org/book/book2" },
    "title" : { "type": "literal", "value": "The Semantic Web" }
  }
]
JSON是一种结果格式,但您也可以获取CSV等

另见:

2) 也是一种非常紧凑的方法(在Python中):

结果:

http://example.org/book/book1 : SPARQL Tutorial
http://example.org/book/book2 : The Semantic Web

您从外部源获得RDF?为什么其间有Protege?您尝试过吗?@TomaszPluskiewicz我正在使用Protege生成正确的RDF。对于exmaple,我正在从该链接练习sparql查询,但如何将数据写入fuseki以进行查询?您打开了我给您的链接吗?:)。您不必编写最简单的方法是让Fuseki从您的RDF文件中提供数据:
Fuseki服务器--file=file/DatasetPathName
@TomaszPluskiewicz您的意思是将我的RDF保存在文件中并运行该命令吗?如果是,那么我如何查询它?再次转到Fuseki sparql端点?如果是,数据集是什么?因为在Fuseki中,我需要选择t数据集和它来自下拉列表是的,保存并启动服务器。我不是Fuseki专家。你必须亲自试验和查看。你从外部来源获得RDF?为什么有Protege?你试过了吗?@TomaszPluskiewicz我使用Protege来生成正确的RDF。对于exmaple,我正在练习sparql查询您不必向fuseki写入数据。最简单的方法是让fuseki从您的RDF文件中提供数据:
fuseki服务器--file=file/DatasetPathName
@TomaszPluskiewicz是否将我的RDF保存在一个文件中并运行逗号nd?如果是,那么我如何查询它?我再次转到fuseki sparql端点?如果是,数据集是什么?因为在fuseki中,我需要从下拉列表中选择数据集。是的,保存并启动服务器。我不是fuseki专家。你必须亲自进行实验和查看。我正在尝试检查,请你说jena distribution,我去了这个页面并下载发行版,但是那里没有sparql可执行文件。无论如何,现在我已经设法与jena一起工作,但是通过web浏览器,但是我喜欢尝试这种方法