代码之家  ›  专栏  ›  技术社区  ›  Wassadamo

用Protege中的SWRL创建新的类和个体

  •  2
  • Wassadamo  · 技术社区  · 6 年前

    here 并没有创造出一个人,也没有 readme

    为了清楚起见,下面是我要制定的规则:

    Person(?person) ^ hasSSN(?person, ?ssn) ^ swrlx:makeOWLThing(?patient, ?person) -> Patient(?patient) ^ hasPID(?patient, ?ssn)
    

    在这个本体中:

    @prefix : <http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48#> .
    @prefix owl: <http://www.w3.org/2002/07/owl#> .
    @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
    @prefix xml: <http://www.w3.org/XML/1998/namespace> .
    @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    @base <http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48> .
    
    <http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48> rdf:type owl:Ontology .
    
    #################################################################
    #    Annotation properties
    #################################################################
    
    ###  http://swrl.stanford.edu/ontologies/3.3/swrla.owl#isRuleEnabled
    <http://swrl.stanford.edu/ontologies/3.3/swrla.owl#isRuleEnabled> rdf:type owl:AnnotationProperty .
    
    
    #################################################################
    #    Data properties
    #################################################################
    
    ###  http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48#hasPID
    :hasPID rdf:type owl:DatatypeProperty .
    
    
    ###  http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48#hasSSN
    :hasSSN rdf:type owl:DatatypeProperty .
    
    
    #################################################################
    #    Classes
    #################################################################
    
    ###  http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48#Patient
    :Patient rdf:type owl:Class .
    
    
    ###  http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48#Person
    :Person rdf:type owl:Class .
    
    
    #################################################################
    #    Individuals
    #################################################################
    
    ###  http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48#person1
    :person1 rdf:type owl:NamedIndividual ,
                      :Person ;
             :hasSSN 1001 .
    
    
    ###  http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48#person2
    :person2 rdf:type owl:NamedIndividual ,
                      :Person ;
             :hasSSN 1002 .
    
    
    ###  http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48#person3
    :person3 rdf:type owl:NamedIndividual ,
                      :Person ;
             :hasSSN 1003 .
    
    
    #################################################################
    #    Rules
    #################################################################
    
    :person rdf:type <http://www.w3.org/2003/11/swrl#Variable> .
    
    :ssn rdf:type <http://www.w3.org/2003/11/swrl#Variable> .
    
    :patient rdf:type <http://www.w3.org/2003/11/swrl#Variable> .
    
    [ <http://swrl.stanford.edu/ontologies/3.3/swrla.owl#isRuleEnabled> "true"^^xsd:boolean ;
       rdfs:comment "Patient For Every Person With PID Equal To SSN"^^xsd:string ;
       rdfs:label "PatientForEveryPersonWithPIDEqualToSSN"^^xsd:string ;
       rdf:type <http://www.w3.org/2003/11/swrl#Imp> ;
       <http://www.w3.org/2003/11/swrl#body> [ rdf:type <http://www.w3.org/2003/11/swrl#AtomList> ;
                                               rdf:first [ rdf:type <http://www.w3.org/2003/11/swrl#ClassAtom> ;
                                                           <http://www.w3.org/2003/11/swrl#classPredicate> :Person ;
                                                           <http://www.w3.org/2003/11/swrl#argument1> :person
                                                         ] ;
                                               rdf:rest [ rdf:type <http://www.w3.org/2003/11/swrl#AtomList> ;
                                                          rdf:first [ rdf:type <http://www.w3.org/2003/11/swrl#DatavaluedPropertyAtom> ;
                                                                      <http://www.w3.org/2003/11/swrl#propertyPredicate> :hasSSN ;
                                                                      <http://www.w3.org/2003/11/swrl#argument1> :person ;
                                                                      <http://www.w3.org/2003/11/swrl#argument2> :ssn
                                                                    ] ;
                                                          rdf:rest [ rdf:type <http://www.w3.org/2003/11/swrl#AtomList> ;
                                                                     rdf:first [ rdf:type <http://www.w3.org/2003/11/swrl#BuiltinAtom> ;
                                                                                 <http://www.w3.org/2003/11/swrl#builtin> <http://swrl.stanford.edu/ontologies/built-ins/3.3/swrlx.owl#makeOWLThing> ;
                                                                                 <http://www.w3.org/2003/11/swrl#arguments> ( :patient
                                                                                                                              :person
                                                                                                                            )
                                                                               ] ;
                                                                     rdf:rest rdf:nil
                                                                   ]
                                                        ]
                                             ] ;
       <http://www.w3.org/2003/11/swrl#head> [ rdf:type <http://www.w3.org/2003/11/swrl#AtomList> ;
                                               rdf:first [ rdf:type <http://www.w3.org/2003/11/swrl#ClassAtom> ;
                                                           <http://www.w3.org/2003/11/swrl#classPredicate> :Patient ;
                                                           <http://www.w3.org/2003/11/swrl#argument1> :patient
                                                         ] ;
                                               rdf:rest [ rdf:type <http://www.w3.org/2003/11/swrl#AtomList> ;
                                                          rdf:first [ rdf:type <http://www.w3.org/2003/11/swrl#DatavaluedPropertyAtom> ;
                                                                      <http://www.w3.org/2003/11/swrl#propertyPredicate> :hasPID ;
                                                                      <http://www.w3.org/2003/11/swrl#argument1> :patient ;
                                                                      <http://www.w3.org/2003/11/swrl#argument2> :ssn
                                                                    ] ;
                                                          rdf:rest rdf:nil
                                                        ]
                                             ]
     ] .
    
    ###  Generated by the OWL API (version 4.2.8.20170104-2310) https://github.com/owlcs/owlapi
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Stanislav Kralin kenwenzel    6 年前

    小球不支持SWRLX:

     WARNING: Ignoring rule Rule([Person(?person), hasSSN(?person,?ssn), makeOWLThing([?patient, ?person])] => [Patient(?patient), hasPID(?patient,?ssn)]):
     No builtin for http://swrl.stanford.edu/ontologies/built-ins/3.3/swrlx.owl#makeOWLThing
    

    不过,你可以使用口水翻译。在SWRL选项卡上,按:

    1. 流口水
    2. 口水->猫头鹰

    这就是生成的内容(在Turtle语法中):

    @prefix p1: <http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48#> .
    @prefix p2: <http://www.semanticweb.org/richard/ontologies/2018/7/untitled-ontology-48##> .
    
    # ...
    
    p2:d5d68a85_03f9_4a69_8c07_9f1a57ffe7aa rdf:type owl:NamedIndividual, p1:Patient ;
                                            p1:hasPID 1003 .
    
    p2:c8c3_3ad6_4c49_b9f6_940f711e8d5f rdf:type owl:NamedIndividual, p1:Patient ;
                                        p1:hasPID 1002 .
    
    p2:c2038_2adb_4d12_b3ee_326cc45ffa2b rdf:type owl:NamedIndividual, p1:Patient ;
                                         p1:hasPID 1001 .
    

    ## 在生成的uri中。