2017-09-12 12 views
2

문제가 너무 간단하게 들립니다. 개인용 데이터 속성을 내 온톨로지의 XSD : 문자열로 만들고 싶습니다.데이터 속성 만들기 XSD : Jena로 문자열

XSD : DateTime, XSD : Float 또는 XSD : int의 속성을 만들 수 있지만 XSD : string을 사용하면 형식이 지정되지 않은 속성이 나타납니다!

최소한의 예제를 만들었습니다. 하나의 클래스와 하나의 개인, 두 개의 데이터 속성으로 온톨로지를 만듭니다. 온톨로지에 타입이없는 예상되는 것과 하나의 문자열처럼 작동하는 DateTime.

Jena 버전 3.4 및 3.0.1을 사용해 보았습니다. 누가 그것을 고칠 지 모릅니다.

package dataproperty; 

import java.io.FileOutputStream; 
import org.apache.jena.datatypes.xsd.XSDDatatype; 
import org.apache.jena.ontology.OntModel; 
import org.apache.jena.rdf.model.ModelFactory; 
import org.apache.jena.rdf.model.Property; 
import org.apache.jena.rdf.model.Resource; 
import org.apache.jena.rdf.model.ResourceFactory; 

public class DataProperty { 

public static void main(String[] args) throws Exception { 
    OntModel model = ModelFactory.createOntologyModel(); 
    String OWLPath = "DataProp.owl"; 
    try{ 
     String NS = "http://www.example.org/ontology.owl#"; 
    //Create Ontology 
      model.createClass(NS+"Test"); 
      Resource r = model.createResource(NS+"Test"); 
      model.createIndividual(NS+"Indi1", r); 
      r = model.createResource(NS+"Indi1"); 
      model.createDatatypeProperty(NS+"Name"); 
      model.createDatatypeProperty(NS+"Date"); 
    //Add Data Properties 
      Property p = model.getProperty(NS+"Name"); 
      model.add(r, p, ResourceFactory.createTypedLiteral("MyName", XSDDatatype.XSDstring)); 
      p = model.getProperty(NS+"Date"); 
      model.add(r, p, ResourceFactory.createTypedLiteral("2017-08-12T09:03:40", XSDDatatype.XSDdateTime)); 
    //Store the ontology 
     FileOutputStream output = null; 
     output = new FileOutputStream(OWLPath); 
     model.write(output); 

    }catch (Exception e) { 
     System.out.println("Error occured: " + e); 
     throw new Exception(e.getMessage()); 
    } 
    } 
} 
+0

리터럴은 기본적으로 문자열이므로 해당 값은 문자열입니다. – evsheino

+0

그러나 내가 아는 한 항상 "MyName"을 얻는 데이터 유형을 지정해야합니다 ^^ XSD : string is not correct? – 2Application

+0

문자열 입력이 RDF 1.1 대 RDF 1.0에서 변경된 것처럼 보입니다.하지만 Jena는 RDF 1.0 "일반 리터럴"을 문자열로 사용한다고 가정합니다. [문서의 제안대로] (https://jena.apache.org/documentation/notes/typed -literals.html). – evsheino

답변

4

RDF 1.1에서는 형식이 지정되지 않았으며 짧은 형식으로 작성되었습니다 (더 나은 호환성).

https://www.w3.org/TR/turtle/ 섹션 2.5.1

"데이터 유형 IRI 및 언어 태그가없는 경우 데이터 유형은 xsd : string입니다."