Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Previewing OWL Changes and Refactorings Using a Flexible XML Database
1. Introduction TNTBase Refactoring Lifecycle Conclusion
Previewing OWL Changes and Refactorings
Using a Flexible XML Database
Ontology Repositories and Editors @ ESWC 2010
Christoph Lange and Vyacheslav Zholudev
Jacobs University, Bremen, Germany
KWARC – Knowledge Adaptation and Reasoning for Content
May 31, 2010
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 1/13
2. Introduction TNTBase Refactoring Lifecycle Conclusion
Ontology Refactoring and Change Management
Definition (Change Management for Ontologies)
‘‘the process of performing the changes as well as [. . . ] the process
of coping with the consequences of changes’’ (Klein 2004)
Definition (Refactoring [in Software Engineering])
‘‘a disciplined technique for restructuring an existing body of code,
altering its internal structure without changing its external
behavior’’ (Fowler)
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 2/13
3. Introduction TNTBase Refactoring Lifecycle Conclusion
Ontology Refactorings and Restructurings
Typical Refactorings: splitting ontologies into modules vs.
merging, moving axioms, rewriting axioms
A B, A C ↔ A B C
Restructurings: e. g. changing URIs
changes external behavior (other ontologies in the repository,
software, annotated documents)
tools try to keep potential damage low
Our Assumptions:
Any change may break things.
Changes should be tested (e. g. by other collaborators).
We offer a versioned repository that previews changes before
making them.
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 3/13
4. Introduction TNTBase Refactoring Lifecycle Conclusion
TNTBase – Our Hammer
TNTBase = Versioned Storage for XML
= Subversion + Berkeley DB XML + TNT(?)
1 xSVN – Subversion on steroids
2 Web app based on Berkeley DB XML
SVN interface
Any SVN clients works with TNTBase
RESTful interface
XQuery/XQuery Update – Extended with versioning model
Virtual Documents – XML database views (hammer)
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 4/13
5. Introduction TNTBase Refactoring Lifecycle Conclusion
Virtual Documents: Editable XML Views
VDoc Specification defines VDocs:
Mixture of static XML elements and XQueries
XQueries can reside separately, can be overriden
Parameters for XQueries
Queryable
Editable
Materializable
VDocs – means to refactor ontologies
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 5/13
6. Introduction TNTBase Refactoring Lifecycle Conclusion
Factoring out a Submodule
<Ontology xmlns="http://www.w3.org/2002/07/owl#"
xml:base="http://example.org/onto"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<Prefix name="cars" IRI="http://example.org/onto#"/>
<Declaration><Class IRI="http://example.org/onto#Car"/></Declaration>
<Declaration><Class IRI="http://example.org/onto#MiniVan"/></Declaration>
<Declaration><Class IRI="#SportsCar"/></Declaration>
<Declaration><Class abbreviatedIRI="cars:Roadster"/></Declaration>
<Declaration><Class IRI="http://example.org/onto#AirPlane"/></Declaration>
<Declaration><Class IRI="http://example.org/onto#FighterBomber"/></Declaration>
<DisjointClasses>
<Annotation><AnnotationProperty abbreviatedIRI="rdfs:comment"/>
<Literal>Cars are not airplanes.</Literal></Annotation>
<Class IRI="#Car"/><Class abbreviatedIRI="cars:AirPlane"/>
</DisjointClasses>
<SubClassOf><Class abbreviatedIRI="cars:MiniVan"/>
<Class abbreviatedIRI="cars:Car"/></SubClassOf>
<SubClassOf><Class IRI="http://example.org/onto#SportsCar"/>
<Class IRI="http://example.org/onto#Car"/></SubClassOf>
<SubClassOf><Class IRI="http://example.org/onto#Roadster"/>
<Class IRI="http://example.org/onto#SportsCar"/></SubClassOf>
<SubClassOf><Class IRI="http://example.org/onto#FighterBomber"/>
<Class IRI="http://example.org/onto#AirPlane"/></SubClassOf>
</Ontology>
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 6/13
7. Introduction TNTBase Refactoring Lifecycle Conclusion
Factoring out a Submodule
<Ontology xmlns="http://www.w3.org/2002/07/owl#"
xml:base="http://example.org/onto"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<Prefix name="cars" IRI="http://example.org/onto#"/>
<Declaration><Class IRI="http://example.org/onto#Car"/></Declaration>
<Declaration><Class IRI="http://example.org/onto#MiniVan"/></Declaration>
<Declaration><Class IRI="#SportsCar"/></Declaration>
<Declaration><Class abbreviatedIRI="cars:Roadster"/></Declaration>
<Declaration><Class IRI="http://example.org/onto#AirPlane"/></Declaration>
<Declaration><Class IRI="http://example.org/onto#FighterBomber"/></Declaration>
<DisjointClasses>
<Annotation><AnnotationProperty abbreviatedIRI="rdfs:comment"/>
<Literal>Cars are not airplanes.</Literal></Annotation>
<Class IRI="#Car"/><Class abbreviatedIRI="cars:AirPlane"/>
</DisjointClasses>
<SubClassOf><Class abbreviatedIRI="cars:MiniVan"/>
<Class abbreviatedIRI="cars:Car"/></SubClassOf>
<SubClassOf><Class IRI="http://example.org/onto#SportsCar"/>
<Class IRI="http://example.org/onto#Car"/></SubClassOf>
<SubClassOf><Class IRI="http://example.org/onto#Roadster"/>
<Class IRI="http://example.org/onto#SportsCar"/></SubClassOf>
<SubClassOf><Class IRI="http://example.org/onto#FighterBomber"/>
<Class IRI="http://example.org/onto#AirPlane"/></SubClassOf>
</Ontology>
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 6/13
8. Introduction TNTBase Refactoring Lifecycle Conclusion
Factoring out a Submodule
<Ontology xmlns="http://www.w3.org/2002/07/owl#"
xml:base="http://example.org/onto"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<Prefix name="cars" IRI="http://example.org/onto#"/>
<Import>cars.owx</Import>
<Declaration><Class IRI="http://example.org/onto#AirPlane"/></Declaration>
<Declaration><Class IRI="http://example.org/onto#FighterBomber"/></Declaration>
<SubClassOf><Class IRI="http://example.org/onto#FighterBomber"/>
<Class IRI="http://example.org/onto#AirPlane"/></SubClassOf>
</Ontology>
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 6/13
9. Introduction TNTBase Refactoring Lifecycle Conclusion
Virtual Document Specification for Factoring out
<tnt:virtualdocument xmlns:tnt="http://tntbase.mathweb.org/ns">
<tnt:skeleton query="tntbase:/factor-out/subclasses.xq"/>
<tnt:params>
<tnt:param name="input">
<tnt:value>/factor-out/transport.owx</tnt:value>
</tnt:param>
<tnt:param name="class">
<tnt:value>http://example.org/onto#Car</tnt:value>
</tnt:param>
<tnt:param name="target">
<tnt:value>cars.owx</tnt:value>
</tnt:param>
</tnt:params>
</tnt:virtualdocument>
These are default values; can be instantiated with other values (for
refactoring a different ontology).
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 7/13
10. Introduction TNTBase Refactoring Lifecycle Conclusion
XQuery for Factoring out
import module namespace tntx = "http://tntbase.org/ns/ores"
at ’tntbase:/lib/ores-module.xq’;
declare default element namespace "http://www.w3.org/2002/07/owl#";
declare variable $input external;
declare variable $class external;
declare variable $target external;
copy $doc := fn:doc($input) modify
(
delete nodes
tntx:complete-with-subclasses($doc/Ontology, $class),
insert node <Import>{ $target }</Import>
after $doc/Ontology/Prefixlast()
)
return $doc
Source code is inside the repository!
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 8/13
11. Introduction TNTBase Refactoring Lifecycle Conclusion
The Underlying Library
declare function tntx:complete-with-subclasses($onto as element(),
$class as xs:string) as element()* {
(: for all tntx:subclasses, return tntx:axioms-for-class :)
};
declare function tntx:axioms-for-class($onto as element(), $class as xs:anyURI) as element()* {
(: Declaration, SubClassOf, EquivalentClasses, DisjointClasses, ... :)
};
declare function tntx:subclasses($onto as element(), $class as xs:anyURI) as xs:anyURI* {
for $subclass in
$onto/SubClassOf[tntx:expandIRIOf(Class[2]) eq $class]/Class[1]/tntx:expandIRIOf(.)
return ($subclass, tntx:subclasses($onto, $subclass))
};
declare function tntx:expandIRIOf($parent as element()) as xs:anyURI {
if ($parent/@IRI)
then tntx:resolveIRIAgainstBase($parent/@IRI)
else if ($parent/@abbreviatedIRI)
then tntx:expandAbbreviatedIRI($parent/@abbreviatedIRI)
else (: throw error :)
};
Key functionality: IRI expansion, equality of OWL expressions
Source code is inside the repository!
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 9/13
12. Introduction TNTBase Refactoring Lifecycle Conclusion
Further Refactorings
Renaming Entities expand and replace IRIs (in all modules)
Merging Modules opposite of factoring out
Rewriting Axioms example: DisjointUnion in OWL 2 (syntactic
sugar for EquivalentClasses/ObjectUnionOf
+ DisjointClasses)
Lowering Expressivity example: extract OWL 2 QL subontology.
easy solution: throw away everything else
smarter solution: weaken axioms
Stripping Axiom Annotations just remove Annotation children
Try the sandbox:
http://tntbase.org/wiki/usecase_ontologies
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 10/13
13. Introduction TNTBase Refactoring Lifecycle Conclusion
Ontology Lifecycle
1 Write VDoc specification (and XQuery if needed)
2 Apply it to desired ontologies
3 Check the output (improve refactoring if needed)
4 Two possibilities to continue:
Edit the VDoc (changes propagated back to original ontology)
Materialize VDoc into new revision of ontology
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 11/13
14. Introduction TNTBase Refactoring Lifecycle Conclusion
Towards Practical Applications
TNTBase scales well
so far tested with different documents → AI Mashup Challenge,
ESWC Demo Session
starting to use it as a BioPortal backend
TNTBase as a storage backend for Protégé or NeOn Toolkit
Use OWL Diff to optimize storage of revision history
TNTBase as a frontend application: human-readable rendering
of interactive semantic documents → ESWC Demo Session
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 12/13
15. Introduction TNTBase Refactoring Lifecycle Conclusion
Conclusion
TNTBase safely implements ontology refactorings as views.
Thanks to XQuery Update and our utility functions, TNTBase
processes ontologies ‘‘semantically’’
TNTBase enables agile collaborative refactoring.
Try the sandbox:
http://tntbase.org/wiki/usecase_ontologies
Lange/Zholudev (Jacobs U.) Previewing OWL Changes and Refactorings Using a Flexible XML Database May 31, 2010 13/13