2Application
2Application

Reputation: 165

Create data property XSD:string with Jena

the problem sounds so simple: I would like to create an data property for an individual as XSD:string in my ontology.

I can create properties of XSD:DateTime, XSD:Float or XSD:int, but if I use XSD:string, I get a untyped property!

I created a minimal example, which create an ontology with one class, one individual an two data properties. A DateTime, which works like expected and one string, which has no type in the ontology.

I tried with Jena versions 3.4 and 3.0.1 and have no idea who to fix it.

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());
    }
  }
}

Upvotes: 2

Views: 1262

Answers (1)

AndyS
AndyS

Reputation: 16630

It is not untyped in RDF 1.1 - it's written in short form (better compatibility).

e.g. https://www.w3.org/TR/turtle/ Section 2.5.1

"If there is no datatype IRI and no language tag, the datatype is xsd:string."

Upvotes: 4

Related Questions