在Protege中使用SWRL创建新的班级和个人 [英] Creating New Classes and Individuals with SWRL in Protege

查看:196
本文介绍了在Protege中使用SWRL创建新的班级和个人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试编写SWRL规则,以自动创建新实体并将它们分配给Protege本体中的类和谓词. 此处的代码甚至不会创建一个人,也不会创建一个人自述文件中的示例.

I've been trying to write SWRL rules that automate creation of new entities and their assignment to classes and predicates in a Protege ontology. The code here didn't result in creation of even one individual, neither did the example in the readme work.

为清楚起见,这是我要努力工作的规则:

For clarity, here is the rule I'm trying to make work:

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

推荐答案

造粒不支持SWRLX:

Pellet doesn't support 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

但是,您可以使用Drools翻译.在SWRLTab上,按:

However, you can use Drools translation. On the SWRLTab, press:

  1. OWL + SWRL->流口水
  2. 流口水
  3. 流口水-> OWL
  1. OWL+SWRL -> Drools
  2. Run Drools
  3. Drools -> OWL

这是生成的(使用Turtle语法):

This is what was generated (in the Turtle syntax):

@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中加倍##.

Please note double ## in the generated URIs.

这篇关于在Protege中使用SWRL创建新的班级和个人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆