2013-05-24 9 views
6

Come è possibile specificare l'intervallo di una proprietà tipo di dati da XSD: corde le cui forme letterale abbinare [A-Z]? Le restrizioni OWL non fanno il trucco per me, almeno a prima vista. C'è un modo per farlo con le espressioni regolari e se sì, dove?limitare xsd: string [A-Z] per rdfs: gamma

+0

D tu fai progressi con questo? –

risposta

0

la seguente espressione nella sintassi Manchester dovrebbe fare il trucco:

string[pattern "A-Z"]

si può mettere direttamente come dati variano in Protege. Non sono sicuro che i ragionatori stiano implementando il costrutto, non l'ho mai usato prima.

Maggiori informazioni su di esso: http://www.w3.org/TR/owl2-manchester-syntax/#facet

4

suppongo vuoi dire "maiuscola singola" che è string[pattern "[A-Z]"].

Se si utilizza Protege, inserirlo nella scheda "Espressione intervallo dati".

eremita 1.3.7 può controllare questo e fornire spiegazioni circa i valori delle proprietà incoerenti.

+0

grazie, proverò con questo – chile

1

Altre risposte hanno spiegato che questo può essere fatto usando le sfaccettature XSD per restringere la gamma di stringhe della proprietà a quelle corrispondenti al modello [A-Z], ma nessuna mostra l'RDF risultante. Ho creato una semplice ontologia in Protégé e definita una proprietà di dati hasLatinInitial. Come altre risposte descritte, l'intervallo è stato specificato come string[pattern "[A-Z]"]. Poi ho creato un individuo JohnDoe e aggiunto le affermazioni di proprietà dati che

JohnDoe hasLatinInitial "J" . 
JohnDoe hasLatinInitial "D" . 

ed eremita 1.3.7 anzi corse e ha riportato alcuna incoerenza. Ho poi aggiunto l'affermazione

JohnDoe hasLatinInitial "3" . 

ed eremita 1.3.7 segnalato un'incongruenza:

enter image description here

Ecco cosa l'ontologia risultante assomiglia in N3 e in RDF/XML:

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

<http://www.example.com/example> 
     a  owl:Ontology . 

example:hasLatinInitial 
     a  owl:DatatypeProperty ; 
     rdfs:range 
       [ a  rdfs:Datatype ; 
       owl:onDatatype xsd:string ; 
       owl:withRestrictions 
         ([ xsd:pattern "[A-Z]" 
          ]) 
       ] . 

example:JohnDoe 
     a  owl:NamedIndividual ; 
     example:hasLatinInitial 
       "3" , "J" , "D" 
<rdf:RDF 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:example="http://www.example.com/example#" 
    xmlns:owl="http://www.w3.org/2002/07/owl#" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> 
    <owl:Ontology rdf:about="http://www.example.com/example"/> 
    <owl:DatatypeProperty rdf:about="http://www.example.com/example#hasLatinInitial"> 
    <rdfs:range> 
     <rdfs:Datatype> 
     <owl:onDatatype rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> 
     <owl:withRestrictions rdf:parseType="Collection"> 
      <rdf:Description> 
      <xsd:pattern>[A-Z]</xsd:pattern> 
      </rdf:Description> 
     </owl:withRestrictions> 
     </rdfs:Datatype> 
    </rdfs:range> 
    </owl:DatatypeProperty> 
    <owl:NamedIndividual rdf:about="http://www.example.com/example#JohnDoe"> 
    <example:hasLatinInitial>3</example:hasLatinInitial> 
    <example:hasLatinInitial>D</example:hasLatinInitial> 
    <example:hasLatinInitial>J</example:hasLatinInitial> 
    </owl:NamedIndividual> 
</rdf:RDF> 

+0

questo è molto utile, specialmente la parte N3, dal momento che non uso Protegé – chile

+0

@chile Se fosse utile, potresti prendere in considerazione [accettandolo] (http: // meta. stackexchange.com/q/5234/225437) per far sapere agli altri utenti che ha funzionato per te, per ridurre il numero di domande senza risposta e per dare a te e me alcuni punti reputazione. –

+0

@JT bene, non ho dovuto usare questa restrizione dopo tutto, quindi non l'ho implementato e non potrei dire per certo quale sia la risposta corretta. Ad ogni modo, la tua soluzione sembra tranquillamente plausibile per me. – chile