2013-06-20 34 views
0
http://www.example.com/teach.rdfs/John http://www.example.com/teach.rdfs#position "Full Professor"   

http://www.example.com/teach.rdfs/John http://www.example.com/teach.rdfs#course"Math" 

http://www.example.com/teach.rdfs/John http://www.example.com/teach.rdfs#student"Undergraduate" 

http://www.example.com/teach.rdfs/Arthur http://www.example.com/teach.rdfs#position "Assistant Professor" 

http://www.example.com/teach.rdfs/Arthur http://www.example.com/teach.rdfs#course"Web Engineering" 

http://www.example.com/teach.rdfs/Arthur http://www.example.com/teach.rdfs#student"Graduate" 

提取从一个RDF三元谓语比较对象(名称),如果这些是三元和我想找到助理教授谁教研究生如何使用SPARQL

Lecturer  Position 

Arthur   Assistant Professor 

它是如何可能使用SPARQL提取上述日期

回答

4

您的数据不在我所知道的任何合法的RDF序列化中,但它很容易进入N3序列化。在同一文档中将http://.../teach.rdfs#http://.../teach.rdfs/用作前缀是相当罕见的。看到一个或另一个是很常见的,但不是两者都有。这不是非法的,所以我们可以使用它。在N3格式,这里就是你的数据文件,data.n3

@prefix teach1: <http://www.example.com/teach.rdfs/> . 
@prefix teach2: <http://www.example.com/teach.rdfs#> . 

teach1:John teach2:position "Full Professor" . 
teach1:John teach2:course "Math" . 
teach1:John teach2:student "Undergraduate" . 
teach1:Arthur teach2:position "Assistant Professor" . 
teach1:Arthur teach2:course "Web Engineering" . 
teach1:Arthur teach2:student "Graduate" . 

查询是非常简单了。这是因为,作为一个文件名为query.sparql

PREFIX teach1: <http://www.example.com/teach.rdfs/> 
PREFIX teach2: <http://www.example.com/teach.rdfs#> 

SELECT ?lecturer ?position WHERE { 
    VALUES ?position { "Assistant Professor" } 
    ?lecturer teach2:position ?position ; 
      teach2:student "Graduate" . 
} 

这是一个有点不寻常关于这个查询的唯一的事情就是使用VALUES ?position { "Assistant Professor" }。我使用VALUES表单的原因是,您希望的结果包括输出中的"Assistant Professor"。如果我们排除VALUES ...部分,我们可以重写的图案

?lecturer teach2:position "Assistant Professor" ; 
      teach2:student "Graduate" . 

,并从中找到相同?lecturer S,但没有必然"Assistant Professor"变量。通过数据和查询,我们可以使用Jena的ARQ命令行工具对数据运行查询:

$ arq --query query.sparql --data data.n3 
----------------------------------------- 
| lecturer  | position    | 
========================================= 
| teach1:Arthur | "Assistant Professor" | 
-----------------------------------------