2013-06-27 12 views
5

SomeClass के निम्नलिखित उदाहरण पर विचार करें की एक ही सूची को इंगित:सुनिश्चित करें कि कई विषयों खाली नोड्स

instances:some_thing1 
       a semapi:SomeClass ; 
       semapi:hasChainTo (
         [ ... ] [ ... ] [ ... ] 
       ) . 

मैं जरूरत हर उदाहरण (some_thing2, some_thing3, आदि) में अपनी hasChainTo संपत्ति बिंदु है करने के लिए रिक्त नोड्स की एक ही सूची (जैसा कि इसमें केवल एक प्रति है)। मुझे रिक्त नोड्स सिंटैक्स की सूची बनाए रखने की आवश्यकता है क्योंकि चेन बहुत गहरे हो जाते हैं और यह वाक्यविन्यास प्रत्येक श्रृंखला को लिखने के लिए बहुत तरल पदार्थ होता है (SomeClass2, SomeClass3, आदि के लिए)।

यदि मैं बस से बेस क्लास और सब क्लासऑफ बना देता हूं, तो hasChainTo संपत्ति विरासत में होती है लेकिन वह ऑब्जेक्ट नहीं है जिस पर यह इंगित कर रहा है। यह सहजता से समझ में आता है लेकिन मुझे अन्य व्यवहार की आवश्यकता है।

यह कैसे पूरा किया जा सकता है?

उत्तर

5

यदि आप ग्राफ में एकाधिक नोड्स से एक ही चीज़ को संदर्भित करना चाहते हैं, तो आपको इसे एक यूआरआई देना चाहिए। यह एक पूर्ण http: यूआरआई होने की जरूरत नहीं है - आप एक UUID इस्तेमाल कर सकते हैं:

instances:some_thing_1 
    semapi:hasChainTo <urn:uuid:12345>. 
instances:some_thing_2 
    semapi:hasChainTo <urn:uuid:12345>. 
instances:some_thing_3 
    semapi:hasChainTo <urn:uuid:12345>. 

<urn:uuid:12345> 
    semapi:chain (
    [ .. ] [ .. ] [ .. ] 
). 

वस्तु उन्मुख भाषाओं में स्थिति और व्यवहार की विरासत के साथ भ्रमित न RDFS/OWL उप-वर्गों। आरडीएफएस में वर्ग पदानुक्रम नोड्स वर्गीकृत करने के लिए है - यानी उन्हें एक कक्षा में असाइन करना, जहां एक वर्ग संसाधनों का कुछ सेट है। जावा जैसी भाषाओं में विरासत से प्राप्त कोड-पुन: उपयोग का कोई प्रत्यक्ष समतुल्य नहीं है।

+2

तो OWL (जो यह शायद के बाद से RDF सूचियों का उपयोग किया जा रहा है, नहीं है), एक बार वहाँ एक रास्ता है, हालांकि सूची का उल्लेख करने के लिए चित्र में है, तो आप निर्दिष्ट कर सकते हैं 'SomeClass SubClassOf semapi: हैChainTo मान ', जिसका अर्थ है कि 'SomeClass' का प्रत्येक उदाहरण वास्तव में' semapi है: hasChainTo ' (और "प्रत्येक उदाहरण" में उप-वर्गों के उदाहरण शामिल हैं)। –

+3

हां, यह सच है कि आप ऐसा कर सकते हैं। आप एक ओडब्लूएल तर्ककर्ता बनाम जटिलता की आवश्यकता को बंद कर देंगे। प्रत्येक बार जब एक इंस्टेंस बनाया जाता है तो एक अतिरिक्त ट्रिपल पर जोर देने की आवश्यकता होती है। चूंकि संसद पहले से ही एक चिंता के रूप में अद्यतन प्रदर्शन को ध्वजांकित कर चुकी है, इसलिए मुझे यकीन नहीं है कि मैं तर्क के पक्ष में व्यापार बंद कर दूंगा। लेकिन यह निर्णय पूरी तरह से परियोजना के संदर्भ के पूर्ण विवरण पर निर्भर करता है। –

2

आप शायद आरडीएफ (एस) में काम कर रहे हैं, और ओडब्लूएल में नहीं, लेकिन यदि आपके पास ओडब्लूएल आधारित उपकरण का उपयोग करने की क्षमता है, और किसी भी व्यक्ति के लिए जो इस प्रश्न को पाता है और ओडब्लूएल आधारित उपकरण का उपयोग कर सकता है, यहां एक ओडब्लूएल आधारित उत्तर है।

यदि आप किसी वर्ग के प्रत्येक उदाहरण (इसके उप-वर्गों के उदाहरणों सहित) चाहते हैं तो कुछ संपत्ति मूल्य सामान्य हो, तो आप Individual Value Restriction का उपयोग कर सकते हैं। मैनचेस्टर वाक्य रचना में, आप कह सकते हैं कि SomeClass सभी के उदाहरण अभिगृहीत के अनुसार प्रॉपर्टी hasValue के लिए मूल्य sharedIndividual है:

SomeClass SubClassOf hasValue value sharedIndividual 

फिर SomeClass के प्रत्येक उदाहरण प्रकार hasValue value sharedIndividual, जिसका मतलब है उदाहरण sharedIndividual है कि के रूप में है hasValue संपत्ति के लिए एक मूल्य।

यहां कक्षा SomeClass और दो उप-वर्ग SomeSubClass और AnotherSubClass के साथ एक ऑटोलॉजी का एन 3 क्रमबद्धता है। तीनों वर्गों में से प्रत्येक को एक घोषित व्यक्ति है। प्रकार hasValue value sharedIndividualSomeClass का एक सुपरक्लास है।

@prefix :  <http://www.example.com/valueClassExample#> . 
@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#> . 

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

:hasValue 
     a  owl:ObjectProperty . 

:sharedValue 
     a  owl:Thing , owl:NamedIndividual . 

:SomeClass 
     a  owl:Class ; 
     rdfs:subClassOf 
       [ a  owl:Restriction ; 
       owl:hasValue :sharedValue ; 
       owl:onProperty :hasValue 
       ] . 

:SomeSubClass 
     a  owl:Class ; 
     rdfs:subClassOf :SomeClass . 

:AnotherSubClass 
     a  owl:Class ; 
     rdfs:subClassOf :SomeClass . 

:SomeClassInstance 
     a  :SomeClass , owl:NamedIndividual . 

:SomeSubClassInstance 
     a  owl:NamedIndividual , :SomeSubClass . 

:AnotherSubClassInstance 
     a  owl:NamedIndividual , :AnotherSubClass . 

इस सत्तामीमांसा शागिर्द में और गोली के साथ भरी हुई के साथ तर्क के लिए संलग्न, पूछ जो व्यक्तियों sharedValuehasValue संपत्ति का एक मूल्य के रूप में सभी व्यक्तियों से पता चलता है।

result of <code>hasValue value sharedProperty</code> DL query

+2

प्रतिक्रिया के लिए धन्यवाद। यह दूसरों के लिए यहां ध्यान देने योग्य है कि यह ओडब्लूएल 2 प्रोफाइल ईएल और आरएल में समर्थित है लेकिन 'ऑब्जेक्टहासवेल्यू' प्रतिबंध के माध्यम से क्यूएल नहीं है। http://www.w3.org/TR/owl2-profiles/ – parliament

+1

@parliament बहुत अच्छा अवलोकन! मैं लगभग हमेशा ओडब्लूएल डीएल में काम कर रहा हूं, इसलिए मैंने विभिन्न प्रोफाइलों के सभी इंस और आउट नहीं सीखे हैं, लेकिन किसी के लिए रहने के लिए किसी के लिए यह बहुत महत्वपूर्ण हो सकता है! –

संबंधित मुद्दे