संभवतः तरीके यह पूरा करने के लिए, अपने कार्यान्वयन प्राथमिकताओं के आधार पर की एक संख्या है। मेरी सलाह rdf:li
मनमाने ढंग से rdf:_nnn
के स्थान पर विशेष संपत्ति का उपयोग करना है, जो विस्तार करना आसान है। rdf:li
क्रम में rdf:_1
, rdf:_2
के बराबर है। तो निम्नलिखित कोड ब्लॉक समतुल्य हैं:
:mySeq a rdf:Seq;
rdf:_1 :foo;
rdf:_2 :bar .
:mySeq a rdf:Seq;
rdf:li :foo;
rdf:li :bar .
ध्यान दें कि दूसरे ब्लॉक में ऑर्डर महत्वपूर्ण है।
पूरा करने के लिए आप क्या कह रहे हैं, आप एक नया संपत्ति के साथ rdf:li
का विस्तार करने और अपने डोमेन/सीमा को परिष्कृत (हालांकि ये केवल वास्तव में मानव पाठकों के लिए सार्थक कर रहे हैं, के रूप में बच्चे के माता-पिता की संपत्ति के शब्दों को विरासत में) कर सकते हैं:
:myItem rdfs:subPropertyOf rdf:li;
rdfs:range :typeOfElement;
rdfs:domain :mySeq .
:myItem
rdf:li
के शब्दों, इसलिए जो कुछ भी implementatin तर्क आप अनुमान लगा सकते हैं कि :myItem
के मूल्यों कुछ सार्थक क्रम में हैं इनहेरिट करती है। अगला एक संपत्ति प्रतिबंध के माध्यम से :mySeq
वर्ग को परिभाषित:
:mySeq rdfs:subClassOf [
a owl:Restriction;
owl:onProperty :myItem;
owl:allValuesFrom :typeOfElement;].
जो दावा है कि :mySeq
सब बातों जहां संपत्ति :myItem
स्पष्ट :typeOfElement
के मूल्यों के लिए प्रयोग किया जाता है का एक वर्ग है। अब आप :mySeq
के साथ सूचियां बना सकते हैं।
एक कदम और आगे जाने के लिए, यदि आप उपरोक्त नियम और rdf:Seq
के चौराहे के रूप में :mySeq
परिभाषित कर सकते हैं:
:mySeq a owl:Class;
owl:equivalentClass
[ a owl:Class;
owl:intersectionOf
(rdf:Seq
[a owl:Restriction;
owl:onProperty :myItem;
owl:allValuesFrom :typeOfElement ]) ] .
नोट rdfs:subClassOf
के स्थान पर उपयोग owl:equivalentClass
। अगर हम सममित और rdfs:subClassOf
द्वारा सम्मिलित है, जैसे के रूप में owl:equivalentClass
का इलाज:
owl:equivalentClass a owl:SymmetricProperty .
owl:equivalentClass rdfs:subPropertyOf rdfs:subClassOf .
तो हम तुल्यता कि दोनों दिशाओं में चला जाता है हो सकता है। इसलिए rdf:Seq
के सभी उदाहरण जिनके मान :myItem
:typeOfElement
:mySeq
के उदाहरण हैं। इस मामले में आप इस प्रकार का उल्लंघन कर रहे हैं। तो कथन के माध्यम से:
:x a rdf:Seq; :myItem :foo, :bar .
आप :x a :mySeq
का अनुमान लगा सकते हैं।
यह केवल उत्तर का एक हिस्सा है।मैं यह नहीं कह सकता कि कौन सी संपत्ति, 'rdf: _n' या': myItem', मैं 'mySeq' में उपयोग करूंगा। मेरी मुख्य समस्या ': mySeq' को केवल': myItem' 'का उपयोग करने के लिए मजबूर करना है। तो मुझे लगता है कि मुझे 'rdf: seq' या उसके जैसा कुछ उप-वर्ग परिभाषित करना होगा। –
हां, आप सही हैं। मैंने अपना जवाब अपडेट कर लिया है। उम्मीद है कि यह आपको एक बेहतर ट्रैक पर ले जाएगा। इसके अलावा [आदेशित सूची ऑटोलॉजी] (http://smiy.sourceforge.net/olo/spec/orderedlistontology.html) पर एक नज़र डालें, जो कि आरडीएफ कंटेनरों की तुलना में काम करना आसान हो सकता है। – chris