Jak określić zakres właściwości typu danych na xsd: ciągi znaków, których formuła literowa jest zgodna z [A-Z]? Ograniczenia OWL nie robią tego dla mnie, przynajmniej na pierwszy rzut oka. Czy można to zrobić za pomocą wyrażeń regularnych, a jeśli tak, to gdzie?ograniczyć xsd: ciąg do [A-Z] dla rdfs: zakres
Odpowiedz
Następujące wyrażenie w składni Manchester powinno załatwić sprawę:
string[pattern "A-Z"]
Można umieścić go prosto jak zakres danych w Protege. Nie jestem pewien, jakie konstruktory implementują konstrukcję, nigdy wcześniej jej nie używałam.
Więcej informacji na jej temat: http://www.w3.org/TR/owl2-manchester-syntax/#facet
Przypuszczam znaczy „literą”, który jest string[pattern "[A-Z]"]
.
Jeśli używasz protokołu Protege, wprowadź go w zakładce "Zakres danych".
HermiT 1.3.7 może to sprawdzić i podać wyjaśnienia dotyczące niespójnych wartości właściwości.
dziękuję, spróbuję tego – chile
Inne odpowiedzi wyjaśniły, że można to zrobić za pomocą aspektów XSD, aby ograniczyć zakres ciągów właściwości do tych pasujących do wzorca [A-Z]
, ale żaden nie pokazał wynikowego RDF. Stworzyłem bardzo prostą ontologię w Protégé i zdefiniowałem właściwość danych hasLatinInitial
. Jak inne opisane odpowiedzi, zakres został określony jako string[pattern "[A-Z]"]
. Potem stworzył indywidualny JohnDoe
i dodał twierdzenia własności danych, które
JohnDoe hasLatinInitial "J" .
JohnDoe hasLatinInitial "D" .
i pustelnik 1.3.7 rzeczywiście prowadził i nie zgłoszone niespójność. I dodaje twierdzenie
JohnDoe hasLatinInitial "3" .
i pustelnik 1.3.7 podano niespójność:
oto co powstały ontologia wygląda w N3 oraz w 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>
jest to bardzo pomocne, szczególnie część N3, ponieważ nie używam Protegé – chile
@chile Jeśli było to pomocne, możesz rozważyć [zaakceptowanie] (http: // meta. stackexchange.com/q/5234/225437), aby inni użytkownicy wiedzieli, że to zadziałało dla Ciebie, aby zmniejszyć liczbę pytań bez odpowiedzi oraz aby dać ci i Tobie kilka punktów reputacji. –
@JT dobrze, nie musiałem używać tego ograniczenia, więc nie wdrożyłem go i nie mogłem powiedzieć na pewno, która jest poprawna odpowiedź. W każdym razie twoje rozwiązanie wydaje mi się ciche. – chile
D id Czy robisz z tym postęp? –