Jenaを使ってみる
何をしていいのかさっぱりなので、とりあえずOntologyを作ってみる。
友人に聞いたらJavaのframeworkでJenaっていうのがあるっぽい。
Jena is a Java framework for building Semantic Web applications. It provides a programmatic environment for RDF, RDFS and OWL, SPARQL and includes a rule-based inference engine.
Apache Jena - Apache Jena
さっそくこれを使ってOntology(というかRDF)を作ることにする。
下準備
最新版をダウンロード。回答してできたもののうち、libディレクトリ内のjarファイルを適当なところにコピー&パスを通してあげればOK。
今回生成するRDFはここにある
"Internet Movie DataBase"を簡略化したものにする。
ソースコード
import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.rdf.model.ModelFactory; import com.hp.hpl.jena.rdf.model.Resource; import com.hp.hpl.jena.vocabulary.RDF; import com.hp.hpl.jena.vocabulary.RDFS; public class MovieOntologyGenerator { public static String BASE_URI = "http://kslash.jp/movie"; public static void main(String[] args) { Model model = ModelFactory.createDefaultModel(); Resource movie = model.createResource(BASE_URI + "#movie",RDFS.Class); Resource company = model.createResource(BASE_URI + "#company",RDFS.Class); Resource moviePerson = model.createResource(BASE_URI + "#movie_person",RDFS.Class); Resource qualification = model.createResource(BASE_URI + "#qualification",RDFS.Class); Resource generatesProperty = model.createResource(BASE_URI + "#generates",RDF.Property); generatesProperty.addProperty(RDFS.domain, company); generatesProperty.addProperty(RDFS.range, movie); Resource participatesProperty = model.createResource(BASE_URI + "#participates", RDF.Property); participatesProperty.addProperty(RDFS.domain, moviePerson); participatesProperty.addProperty(RDFS.range, movie); Resource hasQualificationProperty = model.createResource(BASE_URI + "#has_qualification",RDF.Property); hasQualificationProperty.addProperty(RDFS.domain, movie); hasQualificationProperty.addProperty(RDFS.range, qualification); model.write(System.out, "RDF/XML-ABBREV"); } }
URIとかは適当。見る人が見れば、そんなに難しいコードではないはず。
出力結果
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <rdfs:Class rdf:about="http://kslash.jp/movie#company"/> <rdfs:Class rdf:about="http://kslash.jp/movie#movie_person"/> <rdfs:Class rdf:about="http://kslash.jp/movie#movie"/> <rdfs:Class rdf:about="http://kslash.jp/movie#qualification"/> <rdf:Property rdf:about="http://kslash.jp/movie#generates"> <rdfs:range rdf:resource="http://kslash.jp/movie#movie"/> <rdfs:domain rdf:resource="http://kslash.jp/movie#company"/> </rdf:Property> <rdf:Property rdf:about="http://kslash.jp/movie#participates"> <rdfs:range rdf:resource="http://kslash.jp/movie#movie"/> <rdfs:domain rdf:resource="http://kslash.jp/movie#movie_person"/> </rdf:Property> <rdf:Property rdf:about="http://kslash.jp/movie#has_qualification"> <rdfs:range rdf:resource="http://kslash.jp/movie#qualification"/> <rdfs:domain rdf:resource="http://kslash.jp/movie#movie"/> </rdf:Property> </rdf:RDF>