2009-05-09 4 views
0

Я разрабатываю онтологию и у меня есть проблема с моим запросом Dlв сову «Dl запросе» как использовать передовые Вал запрос в протеже

есть класс называется «цветок»

и этот класс подклассы, которые некоторые цветы имена

, а также есть еще один класс называется «flowersColor»

и имеет следующие значения («красный», «зеленый» и «синий») как люди, не subclass-

каждый цветок имеет один цвет или более

Я хочу, чтобы найти цветок, который имеет красный цвет и только красный

моего DL Query является:

«цветок и hasColor значения красного»

этот запрос даст мне все цветы, которые имеют красный цвет, даже если у него есть другие цвета

однако я хочу, чтобы все цветы имели ТОЛЬКО цвет красный

Я хочу написать что-то вроде этого

«цветок и hasColor только значение красного» < - это не правильно грамматически

Я главный, если цвет имеет сочетание «красный» и «зеленый», то Я не хочу, чтобы увидеть его в моем результате

Я надеюсь, что вы можете помочь мне в моем запросе

Благодаря

ответ

1

запрос, который вы после:

flower and (hasColor only {red}) 

Обратите внимание, что конструктор {.} создает класс от отдельного лица или список лиц. Таким образом, вы можете использовать его везде, где требуется синтаксически класс, например.

(not {blue}) subClassOf 
      {red} and {green,blue} or (hasColor max 10 ({red} or {blue})) 
3

Помните, что OWL использует открытый мир предположение, так что вы несколько ограничены в том, что может быть выведено с помощью описания логики.

Так что ваш «запрос», так как упоминает Kaarel, может быть:

flower and (hasColor only {red}) 

Но это недоказуемо в открытом мире предположения. Там может быть заявление, где-то во вселенной, которая утверждает:

<RedRose> :hasColor :StackOverflow . 

, которые в сочетании с вашими утверждениями (которые вы пытаетесь запроса):

<RedRose> :hasColor :Red . 
<RedRose> a :Flower . 

заставит DL запрос к нет результатов.Таким образом, из-за предположения открытого мира и теоретического существования диких, неточных и нерелевантных утверждений (по крайней мере, с вашей точки зрения), запрос DL будет терпеть неудачу, поскольку он может только вывести утверждения, которые он может доказать, это правда.

Однако ваш примерный запрос может использоваться в ограничении OWL, чтобы определить, что-то не что-то еще. Например, если у вас есть класс (:OnlyRedFlower), который должен иметь только красный цвет, но он имеет синий цвет (вы указали этот дополнительный цвет), то вы можете сделать вывод, что этот новый цветок не в набор :OnlyRedFlower.

Обновление: Для тех, кто заинтересован в попытке это сами, вот онтология я создал на основе этого вопроса:

<?xml version="1.0"?> 
<!DOCTYPE rdf:RDF [ 
    <!ENTITY owl "http://www.w3.org/2002/07/owl#" > 
    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" > 
    <!ENTITY owl2xml "http://www.w3.org/2006/12/owl2-xml#" > 
    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" > 
    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" > 
    <!ENTITY onto "http://www.elastra.com/onto/2009/5/30/onto.owl#" > 
]> 
<rdf:RDF xmlns="http://stackoverflow.com/users/64881/ontology_842588.rdf#" 
    xml:base="http://stackoverflow.com/users/64881/ontology_842588.rdf" 
    xmlns:owl2xml="http://www.w3.org/2006/12/owl2-xml#" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:owl="http://www.w3.org/2002/07/owl#" 
    xmlns:onto="http://www.elastra.com/onto/2009/5/30/onto.owl#"> 
    <owl:Ontology rdf:about=""> 
     <rdfs:comment xml:lang="en" 
      >Example for http://stackoverflow.com/questions/842588/in-owl-dl-query-how-to-use-advanced-valu-query-in-protege</rdfs:comment> 
    </owl:Ontology> 
    <owl:ObjectProperty rdf:about="&onto;hasColor"/> 
    <owl:Class rdf:about="&onto;Color"/> 
    <owl:Class rdf:about="&onto;ExampleFlower"> 
     <rdfs:subClassOf rdf:resource="&onto;Flower"/> 
    </owl:Class> 
    <owl:Class rdf:about="&onto;Flower"/> 
    <owl:Class rdf:about="&onto;OnlyRedFlower"> 
     <owl:equivalentClass> 
      <owl:Class> 
       <owl:intersectionOf rdf:parseType="Collection"> 
        <rdf:Description rdf:about="&onto;Flower"/> 
        <owl:Restriction> 
         <owl:onProperty rdf:resource="&onto;hasColor"/> 
         <owl:allValuesFrom> 
          <owl:Class> 
           <owl:oneOf rdf:parseType="Collection"> 
            <rdf:Description rdf:about="&onto;Red"/> 
           </owl:oneOf> 
          </owl:Class> 
         </owl:allValuesFrom> 
        </owl:Restriction> 
       </owl:intersectionOf> 
      </owl:Class> 
     </owl:equivalentClass> 
     <rdfs:subClassOf rdf:resource="&onto;Flower"/> 
    </owl:Class> 
    <owl:Class rdf:about="&onto;OtherFlower"> 
     <rdfs:subClassOf rdf:resource="&onto;Flower"/> 
    </owl:Class> 
    <onto:Color rdf:about="&onto;Blue"> 
     <rdf:type rdf:resource="&owl;Thing"/> 
    </onto:Color> 
    <onto:Flower rdf:about="&onto;BlueOrchid"> 
     <rdf:type rdf:resource="&owl;Thing"/> 
     <onto:hasColor rdf:resource="&onto;Blue"/> 
    </onto:Flower> 
    <onto:Color rdf:about="&onto;Red"> 
     <rdf:type rdf:resource="&owl;Thing"/> 
    </onto:Color> 
    <onto:Flower rdf:about="&onto;RedRose"> 
     <rdf:type rdf:resource="&owl;Thing"/> 
     <onto:hasColor rdf:resource="&onto;Red"/> 
    </onto:Flower> 
</rdf:RDF>