- ウェブ上のデータをうまく使いましょうというのがセマンティック・ウェブ
- RDFはその一仕様らしい
- SPARQLは横断的検索のための検索言語(SPARQL Protocol and RDF Query Language:SQLみたいな)
- Rには、rrdfというパッケージがある(インストールしたけれど、まだうまく使えない)
library(rrdf)
m1 = load.rdf("sample.rdf")
summarize.rdf(test)
- これで主語・述語・目的語の三つ組が格納されているようだが…
- SPARQLというパッケージもある
d <- SPARQL(url="http://services.data.gov.uk/reference/sparql",query="SELECT * WHERE { ?s ?p ?o . } LIMIT 10",ns=c('time','<http://www.w3.org/2006/time#>'))
is.data.frame(d$results)
- 中味はこんな感じで、URLの羅列(ちなみにこのURLにブラウザでアクセスすると『アクセス権限なし』と言われる)
> d$results
s
1 <http://api.talis.com/stores/govuk-reference/items/
2 <http://api.talis.com/stores/govuk-reference/items/
3 <http://api.talis.com/stores/govuk-reference/items/
4 <http://api.talis.com/stores/govuk-reference/items/
5 <http://api.talis.com/stores/govuk-reference/items/
6 <http://api.talis.com/stores/govuk-reference/items/
7 <http://api.talis.com/stores/govuk-reference/items/
8 <http://api.talis.com/stores/govuk-reference/items/
9 <http://api.talis.com/stores/govuk-reference/items/
10 <http://api.talis.com/stores/govuk-reference/items/
p
1 time:hasBeginning
2 time:hasBeginning
3 time:hasBeginning
4 <http://www.w3.org/1999/02/22-rdf-syntax-ns
5 time:hasBeginning
6 time:hasBeginning
7 <http://www.w3.org/1999/02/22-rdf-syntax-ns
8 time:hasBeginning
9 time:hasBeginning
10 time:hasBeginning
o
1 <http://reference.data.gov.uk/id/gregorian-instant/1983-02-24T00:00:00>
2 <http://reference.data.gov.uk/id/gregorian-instant/2010-05-06T00:00:00>
3 <http://reference.data.gov.uk/id/gregorian-instant/1976-03-04T00:00:00>
4 time:Interval
5 <http://reference.data.gov.uk/id/gregorian-instant/2010-05-06T00:00:00>
6 <http://reference.data.gov.uk/id/gregorian-instant/2010-05-06T00:00:00>
7 time:Interval
8 <http://reference.data.gov.uk/id/gregorian-instant/2010-05-06T00:00:00>
9 <http://reference.data.gov.uk/id/gregorian-instant/1986-05-08T00:00:00>
10 <http://reference.data.gov.uk/id/gregorian-instant/2010-05-06T00:00:00>
> is.data.frame(d$results)
[1] TRUE
>
||<
endpoint <- "http://semanticweb.cs.vu.nl/lop/sparql/"
q <-"SELECT *WHERE {
?event sem:hasPlace ?place .
?place eez:inPiracyRegion ?region .
}"
prefix <- c("lop","http://semanticweb.cs.vu.nl/poseidon/ns/instances/","eez","http://semanticweb.cs.vu.nl/poseidon/ns/eez/")
res <- SPARQL(endpoint,q,prefix)$results
pie(sort(table(res$region)),col=rainbow(12))
q <-
"SELECT *
WHERE {
?event sem:eventType ?event_type .
?event sem:hasPlace ?place .
?place eez:inPiracyRegion ?region .
}"
res <- SPARQL(endpoint,q,ns=prefix)$results
restable <- table(res$event_type,res$region)
par(mar=c(4,10,1,1))
barplot(restable,col=rainbow(10),horiz=TRUE,las=1,cex.names=0.8)
legend("topright",rownames(restable),
cex=0.8,bty="n",fill=rainbow(10))