上一篇文章我介绍了下RDF(Resource Description Framework),现在来说下怎么处理RDF。
主要使用SparQL来处理RDF,SparQL是为RDF开发的一种查询语言。SPARQL全名SPARQL Protocol and RDF Query Language
今天,先说给RDF进行简单的查找,单语句查找,举一个简单的例子:
<rdf:RDF
xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
xmlns:vCard='http://www.w3.org/2001/vcard-rdf/3.0#'
>
<rdf:Description rdf:about="http://somewhere/JohnSmith/">
<vCard:FN>John Smith</vCard:FN>
<vCard:N rdf:parseType="Resource">
<vCard:Family>Smith</vCard:Family>
<vCard:Given>John</vCard:Given>
</vCard:N>
</rdf:Description>
<rdf:Description rdf:about="http://somewhere/RebeccaSmith/">
<vCard:FN>Becky Smith</vCard:FN>
<vCard:N rdf:parseType="Resource">
<vCard:Family>Smith</vCard:Family>
<vCard:Given>Rebecca</vCard:Given>
</vCard:N>
</rdf:Description>
<rdf:Description rdf:about="http://somewhere/SarahJones/">
<vCard:FN>Sarah Jones</vCard:FN>
<vCard:N rdf:parseType="Resource">
<vCard:Family>Jones</vCard:Family>
<vCard:Given>Sarah</vCard:Given>
</vCard:N>
</rdf:Description>
<rdf:Description rdf:about="http://somewhere/MattJones/">
<vCard:FN>Matt Jones</vCard:FN>
<vCard:N
vCard:Family="Jones"
vCard:Given="Matthew"/>
</rdf:Description>
</rdf:RDF>
它的图可以表示为:
上面的RDF可以表示为:
@prefix vCard: <http://www.w3.org/2001/vcard-rdf/3.0#> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . <http://somewhere/MattJones/> vCard:FN "Matt Jones" . <http://somewhere/MattJones/> vCard:N _:b0 . _:b0 vCard:Family "Jones" . _:b0 vCard:Given "Matthew" . <http://somewhere/RebeccaSmith/> vCard:FN "Becky Smith" . <http://somewhere/RebeccaSmith/> vCard:N _:b1 . _:b1 vCard:Family "Smith" . _:b1 vCard:Given "Rebecca" . <http://somewhere/JohnSmith/> vCard:FN "John Smith" . <http://somewhere/JohnSmith/> vCard:N _:b2 . _:b2 vCard:Family "Smith" . _:b2 vCard:Given "John" . <http://somewhere/SarahJones/> vCard:FN "Sarah Jones" . <http://somewhere/SarahJones/> vCard:N _:b3 . _:b3 vCard:Family "Jones" . _:b3 vCard:Given "Sarah" .假如使用SparQL查询FullName是John Smith的主语,语句如下:
SELECT ?x
WHERE
{ ?x <http://www.w3.org/2001/vcard-rdf/3.0#FN> "John Smith" }
SELECT ?x //这句代码代表了查找的东西
由于RDF文件就是主(Subject)谓(Predicate)宾(Object)
=>WHERE { ?x <http://www.w3.org/2001/vcard-rdf/3.0#FN> "John Smith"} //?x为需要查找的东西,<http://www.w3.org/2001/vcard-rdf/3.0#FN>为Predicate,John Smith为宾语。
得到的结果:
---------------------------------
| x |
=================================
| <http://somewhere/JohnSmith/> |
---------------------------------
可以将结果转化为其他格式,以后补充完整。