2013-05-24 11 views
6

Veri türü formları [A-Z] ile eşleşen xsd: dizeleri için veri türü özelliğinin aralığını nasıl belirleyebilirim? OWL kısıtlamaları, en azından ilk bakışta benim için hile yapmaz. Bunu normal ifadelerle yapmanın bir yolu var mı, eğer öyleyse, nerede? Manchester sözdiziminde aşağıdaki ifade hile yapmak gerekirxsd: restrict [rdfs] için [A-Z] dizesi: aralık

+0

D Bu konuda bir ilerleme kaydediyor musunuz? –

cevap

4

Sana string[pattern "[A-Z]"] olduğunu "tek harf" anlamına varsayalım.

Protege kullanıyorsanız, bunu "Veri aralığı ifadesi" sekmesine girin.

HermiT 1.3.7 bunu kontrol edebilir ve tutarsız özellik değerleri hakkında açıklamalar sağlayabilir.

+0

Teşekkür ederim, ben bu – chile

1

Diğer cevaplar, XSD yönleri kullanılarak, bu özelliğin dize aralığını [A-Z] modeliyle eşleşenlerle sınırlamak için yapılabileceğini açıkladı, ancak hiçbiri ortaya çıkan RDF'yi göstermedi. Protégé'de çok basit bir ontoloji oluşturdum ve bir hasLatinInitial veri özelliğini tanımladım. Tarif edilen diğer cevaplarda, aralık string[pattern "[A-Z]"] olarak belirtildi. Sonra bir birey JohnDoe oluşturulan ve

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

ve münzevi 1.3.7 gerçekten koştu ve hiçbir tutarsızlık bildirdi veri mülkiyet iddialarını ekledi. Sonra

JohnDoe hasLatinInitial "3" . 

iddiasını eklendi ve münzevi 1.3.7 bir tutarsızlık bildirdi:

@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" 
:

enter image description here

İşte çıkan ontoloji N3 ve RDF/XML gibi görünür

<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

çalışacağım bu çok yararlı, özellikle N3 kısmı kullanıyorum, çünkü Protegé kullanmıyor – chile

+0

@chile Eğer bu yardımcı olduysa, kabul etmek isteyebilirsiniz [kabul etmek] (http: // meta. stackexchange.com/q/5234/225437) diğer kullanıcıların sizin için çalıştığını bilmelerini, cevapsız soru sayısını azaltmalarını ve hem siz hem de bana birkaç itibar puanı vermelerini istemek için. –

+0

@JT İyi de bu kısıtlamayı kullanmak zorunda kalmadım, bu yüzden onu uygulamamıştım ve doğru cevabın kesin olduğunu söyleyemedim. Her neyse, çözümün bana göre makul görünüyor. – chile