问题听起来很简单:我想在我的本体中为个人创建一个数据属性 XSD:string。
我可以创建 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());
}
}
}
最佳答案
它在 RDF 1.1 中不是非类型化的 - 它以简短的形式编写(更好的兼容性)。
例如 https://www.w3.org/TR/turtle/ 第2.5.1节
“如果没有数据类型 IRI 且没有语言标记,则数据类型为 xsd:string。”
关于sparql - 创建数据属性 XSD :string with Jena,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46170350/