what the following code does?
package IR.Practica6;
import org.apache.jena.rdf.model.InfModel;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.RDFNode;
import org.apache.jena.rdf.model.Resource;
import org.apache.jena.vocabulary.RDF;
import org.apache.jena.vocabulary.RDFS;

/\*\*
 \* Crea un modelo con una jerarquia de clases y propiedades y le aplica el modelo
 \* de inferencia de RDFS.
 \* Compara el resultado de consultas a la jerarquiía definida con y sin inferencia
 \*/
public class A\_InferenciaRDFS {

 public static void main (String args[]) {
 String NS = "urn:x-hp-jena:eg/";
 
 // contruimos un modelo secillo de seres vivos y sus relaciones
 Model rdfsExample = ModelFactory.createDefaultModel();
 //Definimos una jerarquía de clases de seres vivos
 Resource animalClass = rdfsExample.createResource(NS+"Animal");
 animalClass.addProperty(RDF.type, RDFS.Class);
 Resource mamiferoClass = rdfsExample.createResource(NS+"Mamifero");
 mamiferoClass.addProperty(RDFS.subClassOf, animalClass);
 Resource humanoClass = rdfsExample.createResource(NS+"Humano");
 humanoClass.addProperty(RDFS.subClassOf, animalClass);
 
 //definimos las relaciones hijo, e hijo adoptivo
 Property hijoDe = rdfsExample.createProperty(NS, "hijoDe");
 rdfsExample.add(hijoDe, RDF.type, RDF.Property);
 hijoDe.addProperty(RDFS.domain, animalClass);
 hijoDe.addProperty(RDFS.range, animalClass);
 
 Property hijoAdoptDe = rdfsExample.createProperty(NS, "hijoAdoptivoDe");
 rdfsExample.add(hijoAdoptDe, RDFS.subPropertyOf, hijoDe);
 hijoAdoptDe.addProperty(RDFS.domain, humanoClass);
 hijoAdoptDe.addProperty(RDFS.range, humanoClass);
 
 //añadimos las instancias al modelo y sus relaciones
 Resource luis = rdfsExample.createResource(NS+"Luis");
 Resource juan = rdfsExample.createResource(NS+"Juan"); 
 luis.addProperty(hijoAdoptDe, juan);
 
 //mostramos el modelo sin inferencia
 System.out.println("------------------------------");
 rdfsExample.write(System.out,"TURTLE"); 
 System.out.println("------------------------------");
 
 //creamos un modelo de inferencia RDFS
 InfModel inf = ModelFactory.createRDFSModel(rdfsExample);
 //borramos elementos del modelo para facilitar la visualizacion de lo que nos interesa
 Model model2 = borrarRecursosRDFS(inf);
 
 //mostramos el fragmento deseado del modelo inferido
 System.out.println("------------------------------");
 model2.write(System.out,"TURTLE"); 
 System.out.println("------------------------------");
 }
 
 /\*\*
 \* borramos las clases del modelo rdfs que se añaden automáticamene al hacer la inferencia
 \* simplemente para facilitar la visualización de la parte que nos interesa
 \* si quieres ver todo lo que genera el motor de inferencia comenta estas lineas
 \*/
 private static Model borrarRecursosRDFS(Model inf) {
 //hacemos una copia del modelo ya que el modelo inferido es inmutable
 Model model2 = ModelFactory.createDefaultModel();
 model2.add(inf);
 
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#List"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#subject"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#object"), null, (RDFNode)null); 
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#Class"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#label"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#Resource"), null, (RDFNode)null); 
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#isDefinedBy"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#seeAlso"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#Container"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#Datatype"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#comment"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#range"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#subPropertyOf"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#subClassOf"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#Literal"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#domain"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#nil"), null, (RDFNode)null);
 return model2;
 }
 
 
}
다음 코드는 무엇을 하나요?
패키지 IR.Practica6;
import org.apache.jena.rdf.model.InfModel;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
org.apache.jena.rdf.model.Property를 임포트한다;
org.apache.jena.rdf.model.RDFNode를 임포트한다;
org.apache.jena.rdf.model.Resource를 임포트한다;
org.apache.jena.vocabulary.RDF를 임포트한다;
org.apache.jena.vocabulary.RDFS를 임포트한다;

/\*\*
 \* 클래스 및 속성 저장소로 모델을 생성하고 모델을 적용합니다.
 \* RDFS 추론 모델을 적용합니다.
 \* 참조 결과를 추론이 정의된 쿼리와 추론이 없는 쿼리와 비교합니다.
 \*/
public class A\_InferenciaRDFS {

 public static void main (String args[]) {
 String NS = "urn:x-hp-jena:eg/";
 
 // 간단한 라이브 시퀀스 모델과 그 관계를 구축합니다.
 모델 rdfsExample = ModelFactory.createDefaultModel();
 // 생명체 클래스 저장소를 정의합니다.
 리소스 animalClass = rdfsExample.createResource(NS+"동물");
 animalClass.addProperty(RDF.type, RDFS.Class);
 리소스 mamiferoClass = rdfsExample.createResource(NS+"Mamifero");
 mamiferoClass.addProperty(RDFS.subClassOf, animalClass);
 리소스 humanoClass = rdfsExample.createResource(NS+"Humano");
 humanoClass.addProperty(RDFS.subClassOf, animalClass);
 
 //자녀, 입양아 관계를 정의합니다.
 속성 hijoDe = rdfsExample.createProperty(NS, "hijoDe");
 rdfsExample.add(hijoDe, RDF.type, RDF.Property);
 hijoDe.addProperty(RDFS.domain, animalClass);
 hijoDe.addProperty(RDFS.range, animalClass);
 
 속성 hijoAdoptDe = rdfsExample.createProperty(NS, "hijoAdoptivoDe");
 rdfsExample.add(hijoAdoptDe, RDFS.subPropertyOf, hijoDe);
 hijoAdoptDe.addProperty(RDFS.domain, humanoClass);
 hijoAdoptDe.addProperty(RDFS.range, humanoClass);
 
 //모델과 그 관계에 인스턴스를 추가합니다.
 리소스 루이스 = rdfsExample.createResource(NS+"루이스");
 리소스 후안 = rdfsExample.createResource(NS+"Juan"); 
 luis.addProperty(hijoAdoptDe, juan);
 
 //추론 없이 모델을 표시합니다.
 System.out.println("------------------------------");
 rdfsExample.write(System.out,"TURTLE"); 
 System.out.println("------------------------------");
 
 //RDFS 추론 모델을 생성합니다.
 InfModel inf = ModelFactory.createRDFSModel(rdfsExample);
 //관심 있는 것을 쉽게 시각화하기 위해 모델 요소를 가져옵니다.
 모델 model2 = borrarRecursosRDFS(inf);
 
 //유추한 모델의 원하는 조각을 표시합니다.
 System.out.println("------------------------------");
 model2.write(System.out,"TURTLE"); 
 System.out.println("------------------------------");
 }
 
 /\*\*
 \* 추론을 수행하기 위해 자동으로 추가되는 rdf 모델 클래스를 살펴 보겠습니다.
 \* 단순히 관심있는 부분의 시각화를 용이하게하기 위해서입니다.
 \* 추론 모터가 생성하는 모든 것을 보려면 다음 줄에 댓글을 달아주세요.
 \*/
 비공개 정적 모델 borrarRecursosRDFS(Model inf) {
 //추론된 모델이 변경 불가능하므로 모델의 복사본을 만듭니다.
 모델 model2 = ModelFactory.createDefaultModel();
 model2.add(inf);
 
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#rest"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#List"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#Property"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#subject"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#first"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/1999/02/22-rdf-syntax-ns#object"), null, (RDFNode)null); 
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#Class"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#label"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#Resource"), null, (RDFNode)null); 
 model2.removeAll(inf.createResource("http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty"), null, (RDFNode)null);
 model2.removeAll(inf.createResource("http://www.w3