sparql - 创建数据属性 XSD :string with Jena

标签 sparql jena owl ontology

问题听起来很简单:我想在我的本体中为个人创建一个数据属性 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/

相关文章:

java - 使用 jena fusioni 服务器查询 rdf 文件时出现异常

jena - Pellet不包含我的SWRL规则

owl - 描述逻辑;强制参与

sparql - Jena-Fuseki 需要指定数据集

Sparql skos :broader

sparql - 属性路径深度实际上在 jena sparql 中可用吗?

java - 无法解决依赖关系...直到更新间隔已过或强制更新

java - 如何从整个Ontology中提取特定个体的同义词?

semantic-web - 猫头鹰的含义 :hasValue?

sparql - 使用 SPARQL 确定特定三元组是否存在