2
問題はとてもシンプルに聞こえます。個人のデータプロパティを私のオントロジのXSD:stringとして作成したいと思います。データプロパティを作成するXSD:Jenaを使用した文字列
XSD:DateTime、XSD:FloatまたはXSD:intのプロパティを作成できますが、XSD:stringを使用すると、型なしのプロパティが取得されます。
1つのクラス、1つの個人と2つのデータプロパティでオントロジーを作成する最小限の例を作成しました。期待どおりに働くDateTimeと、オントロジーに型を持たない1つの文字列。
私は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());
}
}
}
リテラルはデフォルトでは文字列なので、これらの値は文字列です。 – evsheino
しかし、私が知っている限り、あなたは常に "MyName"を取得するデータ型を指定する必要があります^^ XSD:string is not correct? – 2Application
RDF 1.1とRDF 1.0では文字列の型が変更されているように見えますが、JenaはRDF 1.0の「プレーンリテラル」を文字列に使用していると思われます(ドキュメントにあるように)(https://jena.apache.org/documentation/notes/typed -literals.html)。 – evsheino