어의망 기술: 제나의 사용(2)-더 많은 예시와 코드 분석(상, 예2-예5)
이번에는 제나의 예시에서 다른 몇 개 프로그램의 코드를 설명하고 RDF의 관련 지식 개념을 약술한 다음에 OWL 단계를 진급할 예정이다.
자, 쓸데없는 말은 그만하고 코드를 올려라. 지난 블로그의 예1이다. 이 블로그는 예2부터 시작한다. 또한 편폭을 간소화하기 위해 예전의 몇몇 licenses는 붙이지 않는다.
예2.
이 예는 표준화된 모델을 만드는 과정을 실현했다. 먼저 모델을 실례화하고 모델 팩토리의 중createDefault모델 () 방법으로 표준적인 빈 모델을 만든 다음에 이 모델에 자원을 만들고 자원이 생기면 자원에 속성과 속성 값을 추가하며 모델을 사용했다.createlist 방법으로 출력합니다.
package jena.examples.rdf;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.vocabulary.*;
/**
* Tutorial 2 resources as property values
*/
public class Tutorial02 extends Object {
public static void main(String args[]) {
// some definitions
String personURI = "http://somewhere/JohnSmith";
String givenName = "John";
String familyName = "Smith";
String fullName = givenName + " " + familyName;
// create an empty model
Model model = ModelFactory.createDefaultModel();
// create the resource
// and add the properties cascading style
Resource johnSmith = model.createResource(personURI).addProperty(VCARD.FN, fullName)
.addProperty(VCARD.N, model.createResource().addProperty(VCARD.Given, givenName).addProperty(VCARD.Family, familyName));
System.out.println(model.createList());
}
}
실행 결과는 다음과 같습니다.
http://www.w3.org/1999/02/22-rdf-syntax-ns#nil
예3.
package jena.examples.rdf ;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.vocabulary.*;
/** Tutorial 3 Statement attribute accessor methods
*/
public class Tutorial03 extends Object {
public static void main (String args[]) {
// some definitions
String personURI = "http://somewhere/JohnSmith";
String givenName = "John";
String familyName = "Smith";
String fullName = givenName + " " + familyName;
// create an empty model
Model model = ModelFactory.createDefaultModel();
// create the resource
// and add the properties cascading style
Resource johnSmith
= model.createResource(personURI)
.addProperty(VCARD.FN, fullName)
.addProperty(VCARD.N,
model.createResource()
.addProperty(VCARD.Given, givenName)
.addProperty(VCARD.Family, familyName));
// list the statements in the graph
StmtIterator iter = model.listStatements();
// print out the predicate, subject and object of each statement
while (iter.hasNext()) {
Statement stmt = iter.nextStatement(); // get next statement
Resource subject = stmt.getSubject(); // get the subject
Property predicate = stmt.getPredicate(); // get the predicate
RDFNode object = stmt.getObject(); // get the object
System.out.print(subject.toString());
System.out.print(" " + predicate.toString() + " ");
if (object instanceof Resource) {
System.out.print(object.toString());
} else {
// object is a literal
System.out.print(" \"" + object.toString() + "\"");
}
System.out.println(" .");
}
}
}
실행 결과는 다음과 같습니다.http://somewhere/JohnSmith http://www.w3.org/2001/vcard-rdf/3.0#N -8efb898:14efd96f6a0:-7fff .
http://somewhere/JohnSmith http://www.w3.org/2001/vcard-rdf/3.0#FN "John Smith".
-8efb898:14efd96f6a0:-7fff http://www.w3.org/2001/vcard-rdf/3.0#Family "Smith".
-8efb898:14efd96f6a0:-7fff http://www.w3.org/2001/vcard-rdf/3.0#Given "John".
예4.
이 예는 표준화된 모델을 만드는 과정을 실현했다. 먼저 하나의 모델을 실례화하고 모델 팩토리의 중create Default 모델 () 방법으로 표준적인 빈 모델을 만든 다음에 이 모델에 자원을 만들고 자원이 생기면 자원에 속성과 속성 값을 추가하는 것이 위에서 아래로의 사고방식으로 기본 모델을 실현하는 과정이다.물론 OWL에서 RDF에 대한 깊은 확장이 있습니다. 이 RDF 시리즈가 완성된 후에 저는 OWL 조작의 실제 과정과 관련 API의 총결을 계속 쓸 것입니다.
package jena.examples.rdf ;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.vocabulary.*;
/** Tutorial 4 - create a model and write it in XML form to standard out
*/
public class Tutorial04 extends Object {
// some definitions
static String tutorialURI = "http://hostname/rdf/tutorial/";
static String briansName = "Brian McBride";
static String briansEmail1 = "[email protected]";
static String briansEmail2 = "[email protected]";
static String title = "An Introduction to RDF and the Jena API";
static String date = "23/01/2001";
public static void main (String args[]) {
// some definitions
String personURI = "http://somewhere/JohnSmith";
String givenName = "John";
String familyName = "Smith";
String fullName = givenName + " " + familyName;
// create an empty model
Model model = ModelFactory.createDefaultModel();
// create the resource
// and add the properties cascading style
Resource johnSmith
= model.createResource(personURI)
.addProperty(VCARD.FN, fullName)
.addProperty(VCARD.N,
model.createResource()
.addProperty(VCARD.Given, givenName)
.addProperty(VCARD.Family, familyName));
// now write the model in XML form to a file
model.write(System.out);
}
}
실행 결과는 다음과 같습니다.
예5.
이 예는 RDF 읽기와 쓰기를 실현하고 경로에서 RDF 파일을 읽고 컨트롤러에서 표준 출력을 실현한다.
package jena.examples.rdf ;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.util.FileManager;
import java.io.*;
/** Tutorial 5 - read RDF XML from a file and write it to standard out
*/
public class Tutorial05 extends Object {
/**
NOTE that the file is loaded from the class-path and so requires that
the data-directory, as well as the directory containing the compiled
class, must be added to the class-path when running this and
subsequent examples.
*/
static final String inputFileName = "vc-db-1.rdf";
public static void main (String args[]) {
// create an empty model
Model model = ModelFactory.createDefaultModel();
InputStream in = FileManager.get().open( inputFileName );
if (in == null) {
throw new IllegalArgumentException( "File: " + inputFileName + " not found");
}
// read the RDF/XML file
model.read(in, "");
// write it to standard out
model.write(System.out);
}
}
여기vc-db-1.rdf 파일이 존재하지 않습니다. rdf 파일을 아무렇게나 찾았습니다. 파일 이름을 'vc-db-1.rdf' 로 바꾸고 inputFileName 경로를 수정했습니다.나는 D 디스크 루트 디렉터리에 두었기 때문에 경로가 'D://vc-db-1.rdf' 로 바뀌었다.실행 결과는 다음과 같습니다.