Skip to content

ontTool 说明文档

Junchao Wu edited this page May 16, 2022 · 2 revisions

ontTool

ontTool中封装了owl本体文件操作过程中常涉及的方法函数

initial_owl(domain_name)

初始化一个空的本体资源 initial a new owlFile

>>> from autoprotege import ontTool, ontModel
>>> DOMAIN_NAME = 'TestKG'
>>> owl = ontTool.initial_owl(DOMAIN_NAME)
>>> print(owl)

# <?xml version="1.0"?>
        <rdf:RDF xmlns="http://www.owl-ontologies.com/TestKG#"
             xml:base="http://www.owl-ontologies.com/TestKG"
             xmlns:owl="http://www.w3.org/2002/07/owl#"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:xml="http://www.w3.org/XML/1998/namespace"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
             xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
             xmlns:TestKG="http://www.owl-ontologies.com/TestKG#">
            <owl:Ontology rdf:about="http://www.owl-ontologies.com/TestKG"/>

            <!-- 
            ///////////////////////////////////////////////////////////////////////////////////////
            //
            // Annotation properties
            //
            ///////////////////////////////////////////////////////////////////////////////////////
             -->

             <!-- 
            ///////////////////////////////////////////////////////////////////////////////////////
            //
            // Object Properties
            //
            ///////////////////////////////////////////////////////////////////////////////////////
             -->

             <!-- 
            ///////////////////////////////////////////////////////////////////////////////////////
            //
            // Data properties
            //
            ///////////////////////////////////////////////////////////////////////////////////////
             -->

            <!-- 
            ///////////////////////////////////////////////////////////////////////////////////////
            //
            // Classes
            //
            ///////////////////////////////////////////////////////////////////////////////////////
             -->

             <!-- 
            ///////////////////////////////////////////////////////////////////////////////////////
            //
            // Individuals
            //
            ///////////////////////////////////////////////////////////////////////////////////////
             -->

        </rdf:RDF>

read_owl(owl_path)

读取一个已存在的owl本体资源 read a old owl

>>> from autoprotege import ontTool, ontModel
>>> DOMAIN_NAME = 'TestKG'
>>> owl = ontTool.read_owl('Personage.owl')
>>> print(owl)

# <?xml version="1.0"?>
<rdf:RDF xmlns="http://www.owl-ontologies.com/Personage.owl#"
xml:base="http://www.owl-ontologies.com/Personage.owl"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:Event="http://www.owl-ontologies.com/Event.owl#"
xmlns:GuangzhouRevolution="http://www.owl-ontologies.com/Personage.owl#">
<owl:Ontology rdf:about="http://www.owl-ontologies.com/Personage.owl">
<owl:ObjectProperty rdf:about="http://www.owl-ontologies.com/TestKG#丈夫">
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="http://www.owl-ontologies.com/TestKG#下属">
</owl:ObjectProperty>
...
<owl:DatatypeProperty rdf:about="http://www.owl-ontologies.com/Personage.owl#军衔">
<rdfs:domain rdf:resource="http://www.owl-ontologies.com/Personage.owl#人物"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="http://www.owl-ontologies.com/Personage.owl#出生地">
<rdfs:domain rdf:resource="http://www.owl-ontologies.com/Personage.owl#人物"/>
</owl:DatatypeProperty>
...
<owl:Class rdf:about="http://www.owl-ontologies.com/Personage.owl#共产党人物">
<rdfs:subClassOf rdf:resource="http://www.owl-ontologies.com/Personage.owl#人物"/>
</owl:Class>
<owl:Class rdf:about="http://www.owl-ontologies.com/Personage.owl#农工党人物">
<rdfs:subClassOf rdf:resource="http://www.owl-ontologies.com/Personage.owl#人物"/>
</owl:Class>
...
<owl:NamedIndividual rdf:about="http://www.owl-ontologies.com/Personage.owl#虞洽卿">
<rdf:type rdf:resource="http://www.owl-ontologies.com/Personage.owl#无党派人物"/>
<主要成就 rdf:datatype="http://www.w3.org/2001/XMLSchema#string">曾任上海总商会会长</主要成就>
<出生地 rdf:datatype="http://www.w3.org/2001/XMLSchema#string">浙江宁波慈溪龙山</出生地>
<出生日期 rdf:datatype="http://www.w3.org/2001/XMLSchema#string">1867年</出生日期>
<职业 rdf:datatype="http://www.w3.org/2001/XMLSchema#string">银行家</职业>
<逝世日期 rdf:datatype="http://www.w3.org/2001/XMLSchema#string">1945年</逝世日期>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">虞洽卿,浙江慈溪人,中国近代爱国民族资本家、航运业巨子。1881年到上海商行当学徒。1892年起历任德商鲁麟洋行、华俄道胜银行、荷兰银行买办。1898年起,在四明公所事件中参与同法租界公董局的交涉。1906年发起组织万国商团中华队,1908年开办四明银行,后又组织南洋劝业会,任副会长。曾先后创办宁绍、三北、鸿安轮船公司,3家公司有船30余艘,总吨位9.1万余吨,为当时国内民营航运之冠。辛亥革命中支持上海光复。1920年合伙创办上海证券物品交易所,任理事长。又任全国工商协会会长、上海总商会会长等。五卅运动中,以上海总商会五卅事件委员会名义,擅自修改向帝国主义者提出的交涉条件,提出停止罢市。1927年以财力支持蒋介石发动“四·一二”反革命政变。后任上海特别市参议会董事、中央银行监事、国民党政府全国经委委员、公共租界工商局华董。抗日战争时期,在上海组织中意轮船公司,并任上海难民救济会会长,办理平粜米获取利润。1941年去重庆,先后组织三民、三北运输公司,转运物资,支持抗战。1945年4月26日,病逝于重庆。翌年11月归葬于故乡宁波慈溪的龙山。</rdfs:comment>
</owl:NamedIndividual>
...
</rdf:RDF>

split_owl(owl,domain_name)

拆解本体资源 split the owl

>>> from autoprotege import ontTool, ontModel
>>> DOMAIN_NAME = 'TestKG'
>>> owl = ontTool.read_owl('Personage.owl')
>>> owl_dic = ontTool.split_owl(owl,DOMAIN_NAME)
>>> print(owl_dic)

# {'header': ['<?xml version="1.0"?>', 
'<rdf:RDF xmlns="http://www.owl-ontologies.com/Personage.owl#"', 
'xml:base="http://www.owl-ontologies.com/Personage.owl"', 
'xmlns:owl="http://www.w3.org/2002/07/owl#"', 
'xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"', 
'xmlns:xml="http://www.w3.org/XML/1998/namespace"', 
'xmlns:xsd="http://www.w3.org/2001/XMLSchema#"', 
'xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"', 
'xmlns:Event="http://www.owl-ontologies.com/Event.owl#"', 
'xmlns:GuangzhouRevolution="http://www.owl-ontologies.com/Personage.owl#">', 
'<owl:Ontology rdf:about="http://www.owl-ontologies.com/Personage.owl">'], 

'opList': [<autoprotege.ontModel.objectProperty.OP object at 0x0000015A93C6F908>, 
<autoprotege.ontModel.objectProperty.OP object at 0x0000015A93C6FA48>,...] ,

'dpList': [<autoprotege.ontModel.dataProperty.DP object at 0x0000015A93E58E48>, 
<autoprotege.ontModel.dataProperty.DP object at 0x0000015A93E58EC8>,...] ,

'classesList': [<autoprotege.ontModel.oneClass.OneClass object at 0x0000015A93E5C2C8>, 
<autoprotege.ontModel.oneClass.OneClass object at 0x0000015A93E5C348>,...] ,

'indsList': [<autoprotege.ontModel.individual.Individual object at 0x0000015A93E5C7C8>, 
<autoprotege.ontModel.individual.Individual object at 0x0000015A93E5C848>,...] ,

'footer': ['</rdf:RDF>']}

merge owl(owl_dic)

将操作后的各个本体资源部分聚合为一个完整的owl merge the owl_dic

>>> from autoprotege import ontTool, ontModel
>>> DOMAIN_NAME = 'TestKG'
>>> owl = ontTool.read_owl('Personage.owl')
>>> owl_dic = ontTool.split_owl(owl,DOMAIN_NAME)
>>> owl_dic = ontTool.merge_owl(owl_dic)
>>> print(owl_dic)

# <?xml version="1.0"?>
<rdf:RDF xmlns="http://www.owl-ontologies.com/Personage.owl#"
xml:base="http://www.owl-ontologies.com/Personage.owl"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:Event="http://www.owl-ontologies.com/Event.owl#"
xmlns:GuangzhouRevolution="http://www.owl-ontologies.com/Personage.owl#">
<owl:Ontology rdf:about="http://www.owl-ontologies.com/Personage.owl">
<owl:ObjectProperty rdf:about="http://www.owl-ontologies.com/TestKG#丈夫">
</owl:ObjectProperty>
<owl:ObjectProperty rdf:about="http://www.owl-ontologies.com/TestKG#下属">
</owl:ObjectProperty>
...
<owl:DatatypeProperty rdf:about="http://www.owl-ontologies.com/Personage.owl#军衔">
<rdfs:domain rdf:resource="http://www.owl-ontologies.com/Personage.owl#人物"/>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:about="http://www.owl-ontologies.com/Personage.owl#出生地">
<rdfs:domain rdf:resource="http://www.owl-ontologies.com/Personage.owl#人物"/>
</owl:DatatypeProperty>
...
<owl:Class rdf:about="http://www.owl-ontologies.com/Personage.owl#共产党人物">
<rdfs:subClassOf rdf:resource="http://www.owl-ontologies.com/Personage.owl#人物"/>
</owl:Class>
<owl:Class rdf:about="http://www.owl-ontologies.com/Personage.owl#农工党人物">
<rdfs:subClassOf rdf:resource="http://www.owl-ontologies.com/Personage.owl#人物"/>
</owl:Class>
...
<owl:NamedIndividual rdf:about="http://www.owl-ontologies.com/Personage.owl#虞洽卿">
<rdf:type rdf:resource="http://www.owl-ontologies.com/Personage.owl#无党派人物"/>
<主要成就 rdf:datatype="http://www.w3.org/2001/XMLSchema#string">曾任上海总商会会长</主要成就>
<出生地 rdf:datatype="http://www.w3.org/2001/XMLSchema#string">浙江宁波慈溪龙山</出生地>
<出生日期 rdf:datatype="http://www.w3.org/2001/XMLSchema#string">1867年</出生日期>
<职业 rdf:datatype="http://www.w3.org/2001/XMLSchema#string">银行家</职业>
<逝世日期 rdf:datatype="http://www.w3.org/2001/XMLSchema#string">1945年</逝世日期>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">虞洽卿,浙江慈溪人,中国近代爱国民族资本家、航运业巨子。1881年到上海商行当学徒。1892年起历任德商鲁麟洋行、华俄道胜银行、荷兰银行买办。1898年起,在四明公所事件中参与同法租界公董局的交涉。1906年发起组织万国商团中华队,1908年开办四明银行,后又组织南洋劝业会,任副会长。曾先后创办宁绍、三北、鸿安轮船公司,3家公司有船30余艘,总吨位9.1万余吨,为当时国内民营航运之冠。辛亥革命中支持上海光复。1920年合伙创办上海证券物品交易所,任理事长。又任全国工商协会会长、上海总商会会长等。五卅运动中,以上海总商会五卅事件委员会名义,擅自修改向帝国主义者提出的交涉条件,提出停止罢市。1927年以财力支持蒋介石发动“四·一二”反革命政变。后任上海特别市参议会董事、中央银行监事、国民党政府全国经委委员、公共租界工商局华董。抗日战争时期,在上海组织中意轮船公司,并任上海难民救济会会长,办理平粜米获取利润。1941年去重庆,先后组织三民、三北运输公司,转运物资,支持抗战。1945年4月26日,病逝于重庆。翌年11月归葬于故乡宁波慈溪的龙山。</rdfs:comment>
</owl:NamedIndividual>
...
</rdf:RDF>

write_owl(owl,owl_path)

将整合后的owl更新到owl文件中 update the owl file

>>> from autoprotege import ontTool, ontModel
>>> DOMAIN_NAME = 'TestKG'
>>> owl = ontTool.read_owl('Personage.owl')
>>> owl_dic = ontTool.split_owl(owl,DOMAIN_NAME)
>>> owl_dic = ontTool.merge_owl(owl_dic)
>>> ontTool.write_owl(owl,'Personage.owl')

# "successfully updated in Personage.owl"