有没有办法我可以直接编写我的RDF数据并通过SPARQL查询它

时间:2016-02-10 10:11:34

标签: sparql rdf semantic-web owl fuseki

我正在练习一些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>

但即便是那个简单而小巧的rdf也会花费我现在的时间。

感谢您的帮助。

更新1

现在我可以这样做将我的数据加载到fuseki

  

./ fuseki-server --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 .

但我不知道如何查询它,因为当我运行Fuseki时,我去查询并且我必须选择一个数据集但是这里没有显示下拉列表中的数据集

更新2

现在它正在工作,我的错误是文件扩展名为.ttl.rdf,当我单独使用它时.ttl

2 个答案:

答案 0 :(得分:0)

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

@prefix : <http://stackoverflow.com/a/35854800/1281433/>

<http://stackoverflow.com/users/1281433/> :hasUserName "Joshua Taylor" .

query.rq 一样:

prefix : <http://stackoverflow.com/a/35854800/1281433/>

select ?user where {
  ?user :hasUserName "Joshua Taylor"
}

然后我可以得到这样的输出:

$ sparql --query query.rq --data data.n3
---------------------------------------------
| user                                      |
=============================================
| <http://stackoverflow.com/users/1281433/> |
---------------------------------------------

答案 1 :(得分:0)

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

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等。

另请参阅:Command line Semantic Web with Redland

2)Using RDFlib to run SPARQL queries也是一种非常紧凑的方式(在Python中):

import rdflib

g = rdflib.Graph()

g.parse("data.ttl", format="n3")

qres = g.query(
    """SELECT DISTINCT *
       WHERE {
          ?s dc:title ?title .
       }""")

for row in qres:
    print("%s : %s" % row)

结果:

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