2013-05-11 20 views
6

Temel OWL ile çalışıyorum ve "Songoku bir öğretim görevlisi, Matematik öğretir" gibi basit bir cümleyi temsil etmek oldukça kolaydır.OWL kullanarak cümlenin temsil edilmesi?

Örn .:

<owl:Class rdf:ID="Lecturer"></owl:Class> 
<owl:Class rdf:ID="Subject"></owl:Class> 
<owl:Property rdf:ID="teach"> 
    <rdfs:domain rdf:resource="#Lecturer"/> 
    <rdfs:range rdf:resource="#Subject"/> 
</owl:Property> 

<Subject rdf:ID="Maths"></Subject> 
<Lecturer rdf:ID="Songoku"> 
    <teach> 
     <Subject rdf:about="#Maths"></Subject> 
    </teach> 
</Lecturer> 

Ama bu cümleyi temsil çalıştığında bir sorunla karşı karşıya: Bob 5 köpek varsa Bob, bir Öğrenci olduğunu o zaman en az 1 kedisi var..

Bana bir öneri söyleyebilir misiniz?

+1

değil ifadesi sadece Okutman bir OWL sınıftır. Konu bir OWL sınıftır" diyor "Songoku, o Matematik öğretir, bir öğretim görevlisi". Öğretiyor Söz konusu RDF pasajı alanı Öğretim ve aralık Konu ile özelliktir ." –

+0

Evet, bu yüzden sorumu güncelledim :) – Songokute

+0

Ah, bunu görmek güzel. :) Sağlanan cevap size uygun mu? –

cevap

13

Genel alt sınıf aksiyomlarını kullanarak OWL'de oldukça karmaşık bazı koşullu cümleleri temsil edebilirsiniz. Birkaç örneğe bakalım. Eğer biraz daha basit bir şey çalışıyorduysanız, en az beş köpeklerle öğrencisidir x eğer bütün x" niceliksel koşullu için kısaltmadır

Students with at least five dogs have at least one cat. 

, sonra x en az olduğu görüşünde bir kedi, sen olanlar hem anonim sınıf ifadelerdir

(Student and hasPet min 5 Dog) subClassOf (hasPet some Cat) 

ile OWL yapabilirsiniz, ancak bazı İşleri basitleştirmek için bazı eşdeğer sınıfları tanımlayabilirsiniz:

StudentWithAtLeastFiveDogs equivalentClass (Student and hasPet min 5 Dogs) 
CatOwner equivalentClass (hasPet some Cat) 
StudentWithAtLeastFiveDogs subClassOf CatOwner 

Şimdi, örneğiniz idi Bob bir öğrencidir, Bob'un 5 köpeği varsa, o zaman en az 1 kedisi vardır. Orada iki cümle var. Birinci kolayca ikinci biraz daha karmaşıktır

Bob a Student 

tarafından kodlanmıştır. Bob'un, en az beş köpeği varsa, en az bir kedisi olan şeylerin sınıfının bir üyesi olduğunu söylüyorsun. A (malzeme) koşullu "P ise, o zaman Q", "(P değil) veya Q" ayrışmasına mantıksal olarak denktir. Yani Bob'un 'un'un en az beş noktaya sahip olduğu veya 'un en az bir kediye sahip olduğu şeylerin sınıfının bir üyesi olduğunu söylüyoruz. Bunun için sınıf ifadesi

(not (hasPet min 5 Dog)) or (hasPet some Cat) 

Şimdi Bob hakkında bilgimiz

Bob a Student 
Bob a (not (hasPet min 5 Dog)) or (hasPet some Cat) 

Bunu anonim sınıf ifadesi için eşdeğer bir sınıfını tanımlamak verebilecek olmasıdır, ama en çok doğal olarak işlenecek şüphe duujjil. İşte Bob hakkında bu bilgiyi içeren bir ontoloji (N3 format cinsinden) aşağıdaki gibi görünür:

@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#> . 

<http://www.example.com/example> 
     a  owl:Ontology . 
:Cat a  owl:Class . 
:Student 
     a  owl:Class . 
:Dog a  owl:Class . 
:hasPet 
     a  owl:ObjectProperty . 
:Bob a  :Student , owl:NamedIndividual ; 
     a  [ a  owl:Class ; 
       owl:unionOf ([ a  owl:Class ; 
          owl:complementOf 
            [ a  owl:Restriction ; 
             owl:minQualifiedCardinality 
               "5"^^xsd:nonNegativeInteger ; 
             owl:onClass :Dog ; 
             owl:onProperty :hasPet 
            ] 
          ] [ a  owl:Restriction ; 
          owl:onProperty :hasPet ; 
          owl:someValuesFrom :Cat 
          ]) 
       ] . 

Aynı yaklaşım veri türü özellikleri ve değerleri üzerinde kısıtlamalar için de kullanılabilir. Örneğin, "eğer Bob en az 60 kilo ağırlığındaysa, o zaman en az 180 cm boyunda," diyebiliriz ki, Bob'un en az 60 kilo ağırlığında olan şeylerin sınıfının bir öğesi olduğunu söyleyebiliriz. 180cm boyunda veya eşdeğerde, ya da ağırlığında en az 60 kg ağırlığa sahip olan veya en az 180 cm boyunda olan şeylerin sınıfı.

Bob is a student. If Bob has 5 dogs then Bob has at least 1 cat. 

: Bu Attempto Controlled English (ACE) bir metindir

:Bob a  [ a  owl:Class ; 
       owl:unionOf ([ a  owl:Class ; 
          owl:complementOf 
            [ a  owl:Restriction ; 
             owl:onProperty :hasWeight ; 
             owl:someValuesFrom 
               [ a  rdfs:Datatype ; 
               owl:onDatatype xsd:int ; 
               owl:withRestrictions 
                 ([ xsd:minInclusive 60 
                  ]) 
               ] 
            ] 
          ] [ a  owl:Restriction ; 
          owl:onProperty :hasHeight ; 
          owl:someValuesFrom 
            [ a  rdfs:Datatype ; 
             owl:onDatatype xsd:int ; 
             owl:withRestrictions 
               ([ xsd:minInclusive 180 
               ]) 
            ] 
          ]) 
       ] . 
+0

Öyleyse, @Joshua Taylor, 3 sınıfı tanımlamalıyım: “Öğrenci” (temel sınıf), “Anon1” (öğrencinin hasPet min Köpek - Öğrenci alt sınıfı değil), “Anon2” (Öğrenci 'hasPet bazı kedi - alt sınıf) “Öğrenci” nin de), ayrıca, “Anon1” ve “Anon2” de ayrıktır ("owl: disjointWith" anahtar sözcüğünü kullanarak), değil mi? – Songokute

+1

Eh, bu sınıfları _define_ (yani, anonim sınıf ifadesine "owl: equalClass" olan bir adlandırılmış sınıf sahibi olmanız) gerekmez ve bu sınıfların da ayrıldığını belirtmeniz gerekmez. Sonuçta, birisinin beş köpeği olmayabilir, ama yine de bir kedisi olabilir, bu durumda, bu sınıfları ayrıştırırsanız, o zaman Anon1 've' Anon2 'olurlar. –

+1

@Songokute Bu "Bob hakkında bilgi" nin, yalnızca adlandırılmış sınıfların Öğrenci, Kedi ve Köpek olduğu bir ontolojide neye benzediğini göstermek için bu cevabı güncelledim. İsimsiz sınıfları herhangi bir "owl: equalClass" ile tanımlamadım. –

3

: Manchester sözdiziminde, sınıf ifadesi

(not (hasWeight some int[>= 60])) or (hasHeight some int[>= 180]) 

gibi varlıkbilimin N3 serileştirme alakalı kısmıdır görünüyor ve bu temsil, OWL:

ClassAssertion(
    :student 
    :Bob 
) 
SubClassOf(
    ObjectIntersectionOf(
    ObjectOneOf(
     :Bob 
    ) 
    ObjectMinCardinality(
     5 
     :have 
     :dog 
    ) 
) 
    ObjectSomeValuesFrom(
    :have 
    :cat 
) 
) 
ile otomatik olarak hesaplanabilen

. Yani, ifadenizi İngilizce olarak yönetmeyi başardıysanız, ACE ayrıştırıcısının otomatik olarak OWL'ye eşlenip eşlenemeyeceğini kontrol etmeye değer, bkz. online demo of the ACE parser.

İlgili konular