2017-04-25 6 views
1

brauche ich solche OWL Format zu erreichen:Jena OWL/RDF Functional

<owl:DatatypeProperty rdf:ID="Role-description"> <rdfs:range 
rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> 
<rdfs:domain rdf:resource="#Role"/> 
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/> 

I Jena verwende und wenn ich versuche, als nächstes zu tun:

DatatypeProperty datatypeProperty = ontModel.createDatatypeProperty(OWL.NS + "Role-description"); 
datatypeProperty.addRDFType(OWL.FunctionalProperty); 
datatypeProperty.asDatatypeProperty(); 

alle Schraubstock Holen Sie sich ein kehrt.

<rdf:RDF 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:owl="http://www.w3.org/2002/07/owl#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"> 
    <owl:Class rdf:about="http://www.w3.org/2002/07/owl#Task"/> 
    <owl:Class rdf:about="http://www.w3.org/2002/07/owl#Actor"/> 
    <owl:ObjectProperty rdf:about="http://www.w3.org/2002/07/owl#Task-performedBy-Actor"/> 
    <owl:ObjectProperty rdf:about="http://www.w3.org/2002/07/owl#Actor-performs-Task"/> 
    <owl:FunctionalProperty rdf:about="http://www.w3.org/2002/07/owl#Role-description"> 
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> 
    </owl:FunctionalProperty> 
</rdf:RDF> 

erkennen, irgendwelche Ratschläge

+0

ich verstehe nicht, wh YIT wichtig, wie die Daten serialisiert. Die Semantik soll gleich sein und jeder geeignete Parser wird die gleichen vollständigen und korrekten Informationen daraus erhalten. Es gibt keine Reihenfolge bei der Serialisierung von OWL, da eine OWL-Ontologie aus einer Reihe von OWL-Axiomen besteht. – AKSW

+0

@AKSW Ich habe häufig ähnliche "Bedürfnisse" gesehen, oft als Folge von übermäßig festgelegten Anforderungen oder Zuweisungen. Oft auch das Ergebnis der Interaktion mit Nicht-RDF- oder Nicht-OWL-Toolchains. – Ignazio

Antwort

2

Der Ausgang Sie bekommen nicht umgekehrt. Was Sie im Grunde haben, ist eine RDF-Ressource mit mehreren Typen. Es hängt von Jena ab, wie sie serialisiert werden sollen (d. H. Welche als "primär" zu betrachten ist). Zur Veranschaulichung werde ich Ihr Beispiel zu Turtle (leicht modifizierte benutzerdefinierten Namespace verwenden) serialise:

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
@prefix owl: <http://www.w3.org/2002/07/owl#> . 
@prefix roles: <http://example.com/ns/roles#> . 
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . 
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 

roles:Role-description 
     a  owl:DatatypeProperty , owl:FunctionalProperty . 

Jetzt ist hier, wie Sie manipulieren die Reihenfolge der Typen für eine bequeme Serialisierung:

public static final String ROLES_NS = "http://example.com/ns/roles#"; 

public static void main(String[] args) { 
    OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM); 
    ontModel.setNsPrefix("roles", ROLES_NS); 

    DatatypeProperty prop = ontModel.createDatatypeProperty(
      ROLES_NS + "Role-description"); 
    prop.setRDFType(OWL.FunctionalProperty); 
    prop.addRDFType(OWL.DatatypeProperty); 

    RDFDataMgr.write(System.out, ontModel, RDFFormat.RDFXML_PRETTY); 
} 

Es produziert die folgende Ausgabe:

<rdf:RDF 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:owl="http://www.w3.org/2002/07/owl#" 
    xmlns:roles="http://example.com/ns/roles#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"> 
    <owl:DatatypeProperty rdf:about="http://example.com/ns/roles#Role-description"> 
    <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/> 
    </owl:DatatypeProperty> 
</rdf:RDF> 
+0

Ut funktioniert, ich weiß es zu schätzen, danke! – Svitlana