Publications of Bart Kuijpers

Some papers are electronically available (some pdf links are dead).
Email me if you need other papers.
For a listing per year see DBLP (Trier).

Topics:

New in 2013
  1. Software Engineering and Complexity in Effective Algebraic Geometry (pdf),
    Joos Heintz, Bart Kuijpers, Andres Rojas Paredes
    to appear in Journal of Complexity, Volume 29, Number 1: 92-138, 2013.
  2. Walk Logic as a framework for path query languages on graph databases (pdf)
    Jelle Hellings, Bart Kuijpers, Jan Van Den Bussche and Xiaowang Zhang
    to appear in the proceedings of the 16th International Conference on Database Theory (ICDT'13), published ACM, 2013.
  3. On the intrinsic complexity of elimination problems in effective Algebraic Geometry
    Joos Heintz, Bart Kuijpers, Andres Rojas Paredes
    to appear in the Contemporary Mathematics series published by the AMS, 2013.
  4. Privacy through Uncertainty in Location-Based Services (pdf)
    Shawn Merrill, Nilgun Basalp, Joachim Biskup, Erik Buchmann, Chris Clifton, Bart Kuijpers, Walied Othman and Erkay Savas
    to appear in the proceeidngs of the Workshop on Privacy and Security for Moving Objects (PriSMO), published IEEE, 2013.
Edited proceedings and thesis
  1. Proceedings of the International Workshop "Moving Objects: From Natural to Formal Language" (workshop of "GIScience 2008")
    eds. Nico Van de Weghe, Roland Billen, Bart Kuijpers and Peter Bogaert
  2. Proceedings of Dagstuhl seminar 07212 "Constraint Databases, Geometric Elimination and Geographic Information Systems"
    eds. Bernd Bank, Max Egenhofer and Bart Kuijpers, July 2007.
  3. Proceedings of the ICDE workshop on Spatio-Temporal Data Mining (STDM'07)
    eds. Bart Kuijpers and Mirco Nanni, IEEE Press, April 2007.
  4. BNAIC 2005, Proceedings of the Seventeenth Belgium-Netherlands Conference on Artificial Intelligence,
    Katja Verbeeck, Karl Tuyls, Ann Nowe, Bernard Manderick, Bart Kuijpers (eds.),
    Koninklijke Vlaamse Academie van Belgie voor Wetenschappen en Kunsten, 2005.
  5. Proceedings of "Constraint Databases and Applications," First International Symposium (CDB'04),
    Bart Kuijpers, Peter Revesz (eds),
    Lecture Notes in Computer Science, Vol. 3074.
  6. Topological Properties of Spatial Databases in the Polynomial Constraint Model (postscript),
    PhD thesis, University of Antwerp (UIA), 1998 (awarded the IBM-Belgium Prize).

Trajectory, moving object and spatio-temporal databases

  1. Kinetic space-time prisms. GIS 2011: 162-170 (pdf)
    Bart Kuijpers, Harvey J. Miller, Walied Othman
    in 19th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems (ACM SIGSPATIAL GIS 2011) (GIS'11), 2010.
  2. Dealing with uncertainty in trajectory databases (pdf)
    Bart Kuijpers
    in Proceedings of the 17th International Symposium on Temporal Representation and Reasoning (TIME'10), 2010.
  3. Anchor uncertainty and space-time prisms on road networks (pdf)
    Bart Kuijpers, Harvey Miller, Tijs Neutens, Walied Othman
    in International Journal of Geographical Information Science, 2010.
  4. An analytic solution to the alibi query in the space-time prisms model for moving object data (pdf)
    Rafael Grimson, Bart Kuijpers, Walied Othman
    in International Journal of Geographical Information Science, Volume 25, Number 2, 293-322, 2011.
  5. Map Matching and Uncertainty: an Algorithm and Real-World Experiments (pdf)
    Kristof Ghys, Bart Kuijpers, Bart Moelans, Walied Othman, Dries van Goidsenhoven and Alejandro Vaisman
    in 17th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems (ACM SIGSPATIAL GIS 2009), ACM, 2009.
  6. Analyzing Trajectories using Uncertainty and Background Information (pdf)
    Bart Kuijpers, Bart Moelans, Walied Othman, and Alejandro Vaisman
    in 11th International Symposium on Spatial and Temporal Databases (SSTD)
    Lecture Notes in Computer Science, 2009.
  7. Trajectory databases: data models, uncertainty and complete query languages (pdf)
    Bart Kuijpers, Walied Othman
    in Journal of Computer and System Sciences (JCSS), 2009.
  8. Modeling uncertainty of moving objects on road networks via space-time prisms (pdf)
    Bart Kuijpers, Walied Othman,
    in International Journal of Geographical Information Science, Volume 23, Issue 9, 1095-1117, 2009.
  9. Propagating and measuring anchor uncertainty in space-time prisms on road networks, (pdf),
    Bart Kuijpers, Harvey Miller, Tijs Neutens, Walied Othman,
    in Dagstuhl Seminar Proceedings 08471, 2008.
  10. First-order Complete and Computationally Complete Query Languages for Spatio-Temporal Databases (pdf)
    Floris Geerts, Sofie Haesevoets, Bart Kuijpers,
    in ACM Transactions on Computational Logic, 2008.
  11. A Model for Enriching Trajectories with Semantic Geographical Information (pdf)
    Luis Ottavio Alvares, Vania Bogorny, Bart Kuijpers, Jose Macedo, Bart Moelans, Alejandro Vaisman
    in Proceedings of the 15th ACM Symposium on Advances in Geographic Information Systems (ACM-GIS'07), 2007.
  12. An analytic solution to the alibi query in the bead model for moving object data, (pdf),
    Bart Kuijpers, Walied Othman,
    in Dagstuhl Seminar Proceedings 07212, 2007.
  13. Trajectory databases: data models, uncertainty and complete query languages (pdf)
    Bart Kuijpers and Walied Othman
    in Proceedings of 11th International Conference on Database Theory (ICDT'07),
    Lecture Notes in Computer Science vol. 4353, 224-238, 2007.
  14. Trajectory data models (pdf)
    Jose Macedo, Christelle Vangenot, Walied Othman, Nikos Pelekis, Elias Frentzos, Bart Kuijpers, Irene Ntoutsi, Stefano Spaccapietra, Yannis Theodoridis,
    Chapter 5 in Mobility, Privacy, and Geography: a Knowledge Discovery Perspective,
    eds. Fosca Giannotti and Dino Pedreschi, Springer-Verlag, 2007.
  15. A case study of the difficulty of quantifier elimination in constraint databases: the alibi query in moving object databases (pdf)
    Walied Othman, Bart Kuijpers and Rafael Gimson
    Manuscript, 2007.
  16. The bead model for moving object data on road networks
    Bart Kuijpers and Walied Othman,
    Manuscript, 2007.
  17. Time-dependent affine triangulation of spatio-temporal data (pdf),
    Sofie Haesevoets, Bart Kuijpers,
    in Proceedings of the 12th International ACM Symposium GIS, 2004.
  18. Classes of Spatiotemporal Objects and Their Closure Properties (pdf),
    Jan Chomicki, Sofie Haesevoets, Bart Kuijpers, Peter Revesz,
    in Annals of Mathematics and Artificial Intelligence, Vol. 39, Nr. 4, 2003.
  19. Data Models and Query Languages for Spatio-Temporal Data
    Bart Kuijpers,
    lecture notes (available at http://earth.esa.int/rtd/Events/ESA-EUSC 2002/Index.html) of invited talk at the
    ESA-EUSC 2002: Joint Seminar on Knowledge Driven Information Management in Earth Observation Data,
    Frascati (Italy), December 2002.
  20. A Theory of Spatio-Temporal Database Queries (pdf),
    Floris Geerts, Sofie Haesevoets, Bart Kuijpers,
    in Proceedings of the 8th International Workshop on Databases and Programming Languages (DBPL'01),
    Lecture Notes in Computer Science, Vol. 2397, 198-212, 2001.
  21. Towards a Theory of Movie Database Queries (pdf),
    Bart Kuijpers, Jan Paredaens, Dirk Van Gucht,
    in Proceedings of the 7th International Workshop on Temporal Representation and Reasoning (TIME'00), 95-102,
    IEEE Computer Science Press, 2000.
  22. Closure Properties of Classes of Spatio-Temporal Objects for Boolean Set Operations (pdf),
    Sofie Haesevoets, Bart Kuijpers,
    in Proceedings of the 7th International Workshop on Temporal Representation and Reasoning (TIME'00), 79-86,
    IEEE Computer Science Press, 2000.

Spatial databases and Geographic Information Systems

  1. Towards a Geometric Interpretation of Double-Cross Matrix-based Similarity of Polylines (pdf),
    Bart Kuijpers, Bart Moelans,
    in Proceedings of the 16th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems (ACM GIS'08), 2008.
  2. Qualitative polyline similarity testing with applications to query-by-sketch, indexing and classification (pdf),
    Bart Kuijpers, Bart Moelans, Nico Van de Weghe
    in Proceedings of the 14th International ACM Symposium GIS, 2006.
  3. The Double-Cross and the Generalization Concept as a Basis for Representing and Comparing Shapes of Polylines (pdf),
    Nico Van de Weghe, Guy De Tre, Bart Kuijpers, Philippe De Maeyer,
    in Proceedings of the 1st International Workshop on Semantic-based Geographical Information Systems (SeBGIS'05),
    Lecture Notes in Computer Science, Vol. 3762, 1087-1096, Springer-Verlag, 2005.
  4. A Qualitative Trajectory Calculus and the Composition of its Relations (pdf),
    Nico Van de Weghe, Bart Kuijpers, Peter Bogaert, Philippe De Maeyer,
    in Proceedings of the 1st International Conference on GeoSpatial Semantics (GeoS'05),
    Lecture Notes in Computer Science, Vol. 3799, 60-76, Springer-Verlag, 2005.
  5. Querying spatial databases in the topological data model using region-based languages (pdf),
    Luca Forlizzi, Bart Kuijpers, Enrico Nardelli,
    in Proceedings of the workshop on Spatial Data and Geographic Information Systems (SpaDaGIS),
    Publication of the University of Genova, 4 pages, 2003.
  6. Region-based Query Languages for Spatial Databases in the Topological Data Model (pdf),
    Luca Forlizzi, Bart Kuijpers, Enrico Nardelli,
    in Proceedings of the 8th International Symposium on Spatial and Temporal Databases (SSTD'03),
    Lecture Notes in Computer Science, Vol. 2750, 344-361, Springer-Verlag, 2003.
  7. Spatial databases: van research naar GIS praktijk (pdf),
    Bart Kuijpers, Jan Paredaens,
    in ViMatrix (journal in lingua populi), January 1999.
  8. Data Models and Query Languages for Spatial Databases (pdf),
    Jan Paredaens, Bart Kuijpers,
    in Data and Knowledge Engineering, Vol.25, 29-53, 1998.
  9. Topological canonization of planar spatial data and its incremental maintenance (pdf),
    Floris Geerts, Bart Kuijpers, Jan Van den Bussche,
    in Proceedings of the 7th International Workshop on Foundations of Models and Languages for Data and Objects (FOMLADO'98),
    Kluwer Academic Publishers, 1998.
  10. Semantics in Spatial Databases (pdf),
    Bart Kuijpers, Jan Paredaens, Luc Vandeurzen,
    in Semantics in Databases, Lecture Notes in Computer Science 1358, 114-135, Springer-Verlag, 1998.
  11. Data Models in Spatial Databases
    Jan Paredaens, Bart Kuijpers, Luc Vandeurzen,
    tutorial notes at the EDBT Summer School, Gubbio (Italy), September 1995.
  12. Lossless Representation of Topological Spatial Data (pdf),
    Bart Kuijpers, Jan Paredaens, Jan Van den Bussche,
    in Advances in Spatial Databases, Proceedings of the 4th International Symposium on Large Spatial Databases (SSD'95),
    Lecture Notes in Computer Science 951, 1-13, 1995.

Constraint query languages (first-order logic over the reals and extensions)

  1. Software Engineering and Complexity in Effective Algebraic Geometry (pdf),
    Joos Heintz, Bart Kuijpers, Andres Rojas Paredes
    to appear in Journal of Complexity, Volume 29, Number 1: 92-138, 2013.
  2. On the intrinsic complexity of elimination problems in effective Algebraic Geometry (pdf)
    Joos Heintz, Bart Kuijpers, Andres Rojas Paredes
    to be published by AMS, 2013.
  3. Evaluating geometric queries using few arithmetic operations (pdf),
    Rafael Grimson, Joos Heintz, Bart Kuijpers
    manuscript , 2012.
  4. Quantifier elimination for elementary geometry and elementary affine geometry (pdf)
    Rafael Grimson, Bart Kuijpers, Walied Othman
    in Mathematical Logic Quarterly, 2012.
  5. Efficient evaluation of specific queries in constraint databases (pdf)
    Rafael Grimson, Joos Heintz, Bart Kuijpers,
    in Information Processing Letters, Volume, 111, Number 19, 941-944, 2011.
  6. Some lower bounds for the complexity of the linear programming feasibility problem over the reals (pdf)
    Rafael Grimson, Bart Kuijpers,
    in Journal of Complexity, Volume, 25, Number 1, 25-37, 2009.
  7. Logical Aspects of Spatial Databases (pdf)
    Bart Kuijpers, Jan Van den Bussche
    in Finite and Algorithmic Model Theory, eds. Michael Benedikt, Christian Michaux, Charles Steinhorn, Cambridge University Press, 2009.
  8. Linear versus Polynomial Constraint Databases (book page)
    Bart Kuijpers,
    in Encyclopedia of Geographic Information Science,
    eds. Shashi Shekhar and Hui Xiong, Springer-Verlag, 2008.
  9. Polynomial Spatial Constraint Databases (book page),
    Bart Kuijpers,
    in Encyclopedia of Geographic Information Science,
    eds. Shashi Shekhar and Hui Xiong, Springer-Verlag, 2008.
  10. First Order Languages Expressing Constructible Spatial Database Queries (pdf),
    Bart Kuijpers, Jan Paredaens, Gabi Kuper, Luc Vandeurzen,
    in SIAM Journal on Computing, Volume 36, Issue 6, 1570-1599, 2007.
  11. Real algebraic geometry and constraint databases (book page) (pdf),
    Floris Geerts and Bart Kuijpers
    in Handbook of Spatial Logics, eds. Marco Aiello, Johan van Benthem, Ian Pratt-Hartmann, 799-856, Springer-Verlag, 2007.
  12. A characterization of first-order topological properties of planar spatial data (pdf),
    Michael Benedikt, Bart Kuijpers, Christof Lodling, Jan Van den Bussche and Thomas Wilke,
    in Journal of the ACM, Volume 53, Issue 2, 273-305, 2006.
  13. Linearization and completeness results for terminating transitive closure queries on spatial databases (pdf),
    Floris Geerts, Bart Kuijpers and Jan Van den Bussche,
    in SIAM Journal on Computing, Volume 35, Issue 6, 1386-1439, 2006.
  14. On the Decidability of Termination of Query Evaluation in Transitive-Closure Logics for Polynomial Constraint Databases (pdf),
    Floris Geerts, Bart Kuijpers,
    in Theoretical Computer Science (a special issue of selected papers of ICDT'03), Vol. 336, Nr. 1, 125-151, 2005.
  15. Constraint Databases, Data Structures and Efficient Query Evaluation (pdf),
    Joos Heintz, Bart Kuijpers,
    in Proceedings of the 1st International Symposium "Applications of Constraint Databases" (CDB'04),
    Lecture Notes in Computer Science, Vol. 3074, 1-24, Springer-Verlag, 2004.
  16. Deciding termination of query evaluation in transitive-closure logics for constraint databases (pdf),
    Floris Geerts, Bart Kuijpers,
    in Proceedings of 9th International Conference on Database Theory (ICDT'03),
    Lecture Notes in Computer Science vol. 2572, 190-206, 2003.
  17. Linear approximation of planar spatial databases using transitive-closure logic (pdf),
    Floris Geerts, Bart Kuijpers,
    in Proceedings of the 19th Symposium on Principles of Database Systems (PODS'00),
    126-135, ACM Press, 2000.
  18. Topological elementary equivalence of closed semi-algebraic sets in the real plane (pdf),
    Bart Kuijpers, Jan Paredaens, Jan Van den Bussche,
    in The Journal of Symbolic Logic, 65: (4), 1530-1555, December 2000.
  19. Topological Queries,
    Bart Kuijpers, Victor Vianu,
    Chapter 10 in Constraint Databases, eds. Gabriel Kuper, Leonid Libkin and Jan Paredaens,
    231-274, Springer-Verlag, 2000.
  20. Euclidean Query Languages,
    Bart Kuijpers, Gabriel Kuper, Jan Paredaens,
    Chapter 11 in Constraint Databases, eds. Gabriel Kuper, Leonid Libkin and Jan Paredaens,
    275-292, Springer-Verlag, 2000.
  21. Genericity in spatial databases,
    Bart Kuijpers, Dirk Van Gucht,
    Chapter 12 in Constraint Databases, eds. Gabriel Kuper, Leonid Libkin and Jan Paredaens,
    293-304, Springer-Verlag, 2000.
  22. Expressing topological connectivity of spatial databases (pdf),
    Floris Geerts, Bart Kuijpers,
    in Proceedings of 7th International Workshop on Database Programming Languages (DBPL'99),
    Lecture Notes in Computer Science 1949, 221-235, Springer-Verlag, 2000.
  23. First-order topological properties of planar spatial databases (pdf),
    Bart Kuijpers, Jan Paredaens, Jan Van den Bussche,
    in Proceedings of the Workshop on Finite Model Theory and its Applications at FLoC'99,
    eds. Michael Benedikt, Leonid Libkin, Jouku Vaananen, Trento (Italy), 1999.
  24. On capturing first-order topological properties of planar spatial databases (pdf),
    Bart Kuijpers, Jan Van den Bussche,
    in Proceedings of the 7th International Conference on Database Theory (ICDT '99),
    Lecture Notes in Computer Science 1540, 187-198, 1999.
  25. On topological elementary equivalence of spatial databases (pdf) ,
    Bart Kuijpers, Jan Paredaens, Jan Van den Bussche,
    in Proceedings of 6th International Conference on Database Theory (ICDT '97),
    Lecture Notes in Computer Science 1186, 432-446, 1997.
  26. On expressing topological connectivity in spatial Datalog (pdf),
    Bart Kuijpers, Marc Smits,
    in Proceedings of "Constraint Databases and Their Applications" (CDB'97),
    Lecture Notes in Computer Science 1191, 116-133, 1997.
  27. Euclid, Tarski and Engeler encompassed (pdf),
    Jan Paredaens, Bart Kuijpers, Gabi Kuper, Luc Vandeurzen,
    in Proceedings of 6th international workshop on database programming languages (DBPL'97),
    Lecture Notes in Computer Science 1369, 1997.
  28. Degrees of monotonicity of spatial transformations (pdf),
    Bart Kuijpers,
    in Proceedings of sixth international workshop on database programming languages (DBPL'97),
    Lecture Notes in Computer Science 1369, 1997.
  29. Termination properties of spatial Datalog programs (pdf),
    Bart Kuijpers, Jan Paredaens, Marc Smits, Jan Van den Bussche,
    in Proceedings of "Logic in Databases" (LID'96), Lecture Notes in Computer Science 1154, 101-116, 1996.

Data mining and OLAP

  1. A State-of-the-Art in Spatio-Temporal Data Warehousing, OLAP and Mining (pdf),
    Leticia Gomez, Bart Kuijpers, Bart Moelans, Alejandro Vaisman
    in Integrations of Data Warehousing, Data Mining and Database Technologies, 200-236, 2011.
  2. A State-of-the-Art in Spatio-Temporal Data Warehousing, OLAP and Mining (pdf),
    Leticia Gomez, Bart Kuijpers, Bart Moelans, Alejandro Vaisman
    in Integrations of Data Warehousing, Data Mining and Database Technologies, 200-236, 2011.
  3. A Data Model and Query Language for Spatio-Temporal Decision Support (pdf),
    Leticia Gomez, Bart Kuijpers, Alejandro Vaisman
    in Geoinformatica, 15(3): 455-496, 2011.
  4. Spatial Aggregation: Data Model and Implementation (pdf),
    Leticia Gomez, Sofie Haesevoets, Bart Kuijpers, Alejandro Vaisman,
    in Information Systems, Volume, 34, Number 6, 551-576, 2009.
  5. Temporal Support in Sequential Pattern Mining (pdf),
    Leticia Gomez, Bart Kuijpers, Alejandro Vaisman,
    in Alberto Mendelzon Workshop on Foundations of Data Management (AMW'09), CEUR Workshop Proceedings, vol. 450, 2009.
  6. A Survey on Spatio-Temporal Data Warehousing (pdf),
    Leticia Gomez, Bart Kuijpers, Bart Moelans, Alejandro Vaisman,
    in International Journal of Data Warehousing and Mining (IJDWM), 2009.
  7. ST-DMQL: a Semantic Trajectory Data Mining Query Language (journal page),
    Vania Bogorny, Bart Kuijpers, Luis Otavio Alvares,
    in International Journal of Geographical Information Science, Volume 23, Issue 10, 1245-1276, 2009.
  8. Querying and Mining Moving Object Databases Using Places of Interest (pdf),
    Leticia Gomez, Bart Kuijpers, Alejandro Vaisman,
    in Annals of Information Systems (special issue on "New Trends in Data Warehousing and Data Analysis"), 2009.
  9. Reducing Non-Interesting Spatial Association Rules in Geographic Databases using Background Knowledge: a Summary of Results (journal page)
    Vania Bogorny, Bart Kuijpers, Luis Otavio Alvares,
    in International Journal of Geographical Information Science, Volume 22, Issue 4, 361-386, 2008.
  10. A model for aggregation of moving object data (pdf),
    Leticia I. Gomez, Bart Kuijpers, Alejandro A. Vaisman
    in Proceedings of ACM SAC'08 (ASIIS),
    ACM, 2008.
  11. Temporal Support of Regular Expressions in Sequential Pattern Mining, (pdf),
    Alejandro Vaisman, Leticia G�mez, Bart Kuijpers,
    in Dagstuhl Seminar Proceedings 08471, 2008.
  12. Aggregation Languages for Moving Object and Places of Interest Data (pdf),
    Leticia I. Gomez, Bart Kuijpers, Alejandro A. Vaisman,
    Manuscript, 2007.
  13. A Clustering-based Approach for Discovering Interesting Places in Trajectories (pdf),
    Andrey Tietbohl Palma, Vania Bogorny, Bart Kuijpers, Luis Otavio Alvares,
    in Proceedings of ACM SAC'08 (ASIIS),
    ACM, 2008.
  14. Recognizing Patterns of Movements in Visitor Flows in Nature Areas (pdf),
    Arend Ligtenberg, Ramona van Marwijk, Bart Moelans, Bart Kuijpers.
    in Proceedings of the 4th International Conference on Monitoring and Management of Visitor Flows in Recreational and Protected Areas (MMV4), 2008.
  15. Piet: a GIS-OLAP Implementation (pdf)
    Ariel Escribano, Leticia I. Gomez, Bart Kuijpers, Alejandro A. Vaisman
    in Proceedings of ACM DOLAP'07, ACM, 2007.
  16. Knowledge Discovery from Geographical Data
    Salvatore Rinzivillo, Franco Turini, Vania Bogorny, Christine Koerner, Bart Kuijpers, Michael May,
    Chapter 9 in Mobility, Privacy, and Geography: a Knowledge Discovery Perspective,
    eds. Fosca Giannotti and Dino Pedreschi, Springer-Verlag, 2007.
  17. Spatio-temporal data mining
    Bart Kuijpers, Mirco Nanni, Christine Koerner, Michael May, and Dino Pedreschi,
    Chapter 10 in in Mobility, Privacy, and Geography: a Knowledge Discovery Perspective,
    eds. Fosca Giannotti and Dino Pedreschi, Springer-Verlag, 2007.
  18. Querying and Reasoning for Spatio-Temporal Data Mining
    Miriam Baglioni, Fosca Giannotti, Bart Kujpers, Giuseppe Manco, Alessandra Raffaet, Chiara Renso,
    Chapter 12 in in Mobility, Privacy, and Geography: a Knowledge Discovery Perspective,
    eds. Fosca Giannotti and Dino Pedreschi, Springer-Verlag, 2007.
  19. A Data Model for Moving Objects Supporting Aggregation (pdf),
    Bart Kuijpers and Alejandro Vaisman
    in the Proceedings of the ICDE Workshop on Spatio-Temporal Data Mining, 2007.
  20. Spatial Data Mining: From Theory to Practice with Free Software (pdf),
    Vania Bogorny, A. Palma, Bart Kuijpers, Luis Otavio Alvares,
    in Proceedings of WSL International Workshop on Free Software (WSL'07). Porto Alegre, 2007.
  21. Privacy Preserving ID3 over Horizontally, Vertically and Grid Partitioned Data (pdf),
    Bart Kuijpers, Bart Moelans, Vanessa Lemmens and Karl Tuyls,
    Manuscript (submitted), 2007.
  22. Mining Maximal Generalized Frequent Geographic Patterns with Knowledge Constraints (pdf),
    Vania Bogorny, Joao Valiati, Sandro Camargo, Paulo Engel, Bart Kuijpers, and Luis Otavio Alvares,
    in Proceedings of the IEEE International Conference on Data Mining (ICDM'06), 2006.
  23. Spatial Aggregation: Data Model and Implementation (pdf),
    Leticia Gomez, Sofie Haesevoets, Bart Kuijpers and Alejandro A. Vaisman
    Manuscript (submitted), 2006.
  24. Mining the Data Cube for Improving its Scheme, (pdf),
    Stijn Dekeyser, Bart Kuijpers, Jan Paredaens, and Jef Wijsen,
    Technical Report UIA, 1998.
  25. Nested data cubes (pdf),
    Stijn Dekeyser, Jan Paredaens, Jef Wijsen,
    Tecnical report UIA, 1998.
  26. The nested data cube model for OLAP (pdf),
    Stijn Dekeyser, Bart Kuijpers, Jan Paredaens, Jef Wijsen,
    in Advances in Database Technologies,
    Lecture Notes in Computer Science 1552, 129-140, Springer-Verlag, 1999.

Shape recognition

  1. Efficient Affine-Invariant Similarity Retrieval (pdf),
    Sofie Haesevoets, Bart Kuijpers, Peter Revesz,
    in Proceedings of the 2nd International Conference Geometric Modelling and Imaging (GMAI'07),
    IEEE Press, 2007.
Inductive learning, Artificial intelligence
  1. Privacy in Multi-Agent Learning: Securely Inducing a Multi-Agent Decision Tree (pdf),
    Karl Tuyls, Bart Kuijpers
    in Proceedings of the Third European Workshop on Multi-Agent Systems (EUMAS05), 427-438, 2005.
  2. An Intelligent Man-Machine Dialogue System Based on AI Planning Techniques,
    Bart Kuijpers, Kris Dockx,
    in International Journal of Applied Intelligence, Vol. 8, Nr. 3, 235-246, 1998.
  3. Production Scheduling in a Chemical Process Environment Based on Simulated Annealing
    Kris Dockx, Bart Kuijpers, Kurt Meert
    in Proceedings of the Workshop on AI Approaches to Modelling and Scheduling Manufacturing Processes,
    ed. Mark Boddy, New Orleans, November 1994, IEEE Press.
  4. Simulated Annealing in the Construction of Near-Optimal Decision Trees,
    James Lutsko, Bart Kuijpers,
    in Selecting Models from Data: Artificial Intelligence and Statistics IV,
    Lecture Notes in Statistics 89, 1994.
Dynamical systems
  1. Topological formulation of termination properties of iterates of functions (pdf) ,
    Floris Geerts, Bart Kuijpers,
    in Information Processing Letters, 89(1), 31-35, 2004.

Reviews and reports

  1. Report on the Dagstuhl Seminar 08471 "Geographic Privacy-Aware Knowledge Discovery and Delivery", (pdf),
    Bart Kuijpers, Dino Pedreschi, Yucel Saygin, Stefano Spaccapietra,
    in Dagstuhl Seminar Proceedings 08471, 2008.
  2. Report on the Dagstuhl Seminar 07212 "Manifesto -- Constraint Databases, Geometric Elimination and Geographic Information Systems", (pdf),
    Bank, Bernd Bank, Max Egenhofer, Joos Heintz, Bart Kuijpers, Peter Revesz,
    in Dagstuhl Seminar Proceedings 07212, 2007.
  3. Report on the Dagstuhl Seminar 07212 "Abstracts Collection -- Constraint Databases, Geometric Elimination ang Geographic Information Systems", (pdf),
    Bank, Bernd Bank, Max Egenhofer, Bart Kuijpers,
    in Dagstuhl Seminar Proceedings 07212, 2007.
  4. Report on the 1st International Symposium on the Applications of Constraint Databases (CDB'04), (pdf),
    Bart Kuijpers, Peter Revesz,
    in SIGMOD Record, June 2005.
  5. Book review: Introduction to Constraint Databases by Peter Revesz. Texts in Computer Science,
    Springer-Verlag, 2002, ISBN 0-387-98729-0, xiv + 393 pages, 112 illustrations, hardcover
    (pdf),
    Bart Kuijpers,
    in Theory and Practice of Logic Programming 3(6): 765-767 (2003).
  6. Review of Introduction to Constraint Databases - by Peter Revesz (pdf),
    Bart Kuijpers,
    in SIGMOD Record, Vol. 31, Nr. 3, September 2002.


































Ytext/html_,http://alpha.uhasselt.be/~lucp1265/pubs.htmlP_WebResourceResponseO7q// funnyordie.com var ISExtract = {}; (function() { var obtnDownload = new Array(); var oplayerDiv = new Array(); var ebtnDownload = new Array(); var eplayerDiv = new Array(); var objectFinal = new Array(); var embedFinal = new Array(); // var osize = new Array(); // var esize = new Array(); var olist = document.getElementsByTagName("object"); var elist = document.getElementsByTagName("embed"); var videoFinal; var vbtnDownload; var vplayerDiv; function get_firstchild(n) { var x = n.firstChild; while (x.nodeType!=1) { x = x.nextSibling; return x; } return x; } function attachButton() { var osize = new Array(); var esize = new Array(); var videoURL = document.location.href; videoURL = videoURL.replace(/:/g, "%3A"); console.log(videoURL); // videoURL = videoURL.replace(/#/g,"?"); olist = document.getElementsByTagName("object"); elist = document.getElementsByTagName("embed"); // 定 义 两 个 数 组 存 放 object 和 embed 的 位 置 var oposition = new Array(); var eposition = new Array(); //object 之 间 进 行 比 较 var object = new Array(); if(olist.length > 0 && olist != null) { var j = 0; for (var i = 0; i < olist.length; i++) { // 233/1397 的 比 例 是 为 了 过 滤 掉 veoh 网 站 的 一 个 高 宽 比 为233/1397 的 flash if(olist[i].offsetHeight > 180 && olist[i].offsetWidth > 160 && (olist[i].offsetHeight/olist[i].offsetWidth > 255/960 && olist[i].offsetHeight/olist[i].offsetWidth < 1.2)) { object[j] = olist[i]; j++; } } var index = 0; if(object.length == 1) { oposition[index] = ISFunction.getElementPos(object[0]); objectFinal[index] = object[0]; } else if(object.length > 1) { for(var i = 0; i < object.length; i++) { oposition[i] = ISFunction.getElementPos(object[i]); } /* for(var i = 0; i < object.length - 1; i++) for(var j = i + 1; j < object.length; j++) { if(oposition[i].x >= oposition[j].x && oposition[i].y >= oposition[j].y) { objectFinal[index] = object[j]; index ++; } else if(oposition[i].x <= oposition[j].x || oposition[i].y <= oposition[j].y || oposition[i].y > oposition[j].y ) { objectFinal[index] = object[i]; index ++; } } */ var temp = oposition[0]; var ok = 0; for(var i = 1; i < object.length; i++) { if(oposition[i].x < temp.x) { temp = oposition[i]; ok = i; } } objectFinal[index] = object[ok]; } } //embed 之 间 进 行 比 较 var embed = new Array(); if(elist.length > 0 && elist != null) { var j = 0; for (var i = 0; i < elist.length; i++) { // 233/1397 的 比 例 是 为 了 过 滤 掉 veoh 网 站 的 一 个 高 宽 比 为233/1397 的 flash if(elist[i].offsetHeight > 180 && elist[i].offsetWidth > 160 && (elist[i].offsetHeight/elist[i].offsetWidth > 255/960 && elist[i].offsetHeight/elist[i].offsetWidth < 1.2)) { embed[j] = elist[i]; j++; } } var index = 0; if(embed.length == 1) { eposition[index] = ISFunction.getElementPos(embed[0]); embedFinal[index] = embed[0]; } else if(embed.length > 1) { for(var i = 0; i < embed.length; i++) { eposition[i] = ISFunction.getElementPos(embed[i]); } /* for(var i = 0; i < embed.length - 1; i++) for(var j = i + 1; j < embed.length; j++) { // if(eposition[i].x >= eposition[j].x && eposition[i].y >= eposition[j].y) { embedFinal[index] = embed[j]; index ++; } // 针 对 myvideo 网 站 的 视 频 添 加 的 判 断 else if(eposition[i].x <= eposition[j].x && eposition[i].y <= eposition[j].y) { embedFinal[index] = embed[i]; index ++; } } */ // 此 代 码 和 上 面 的 双 重for 循 环 等 价 2 月 21 日 下 午 var temp = eposition[0]; var ek = 0; for(var i = 1; i < embed.length; i++) { if(eposition[i].x <= temp.x && eposition[i].y <= temp.y) { temp = embed[i]; ek = i; } } embedFinal[index] = embed[ek]; } } // objec 和 embed 进 行 比 较 // www.atom.com 网 站 存 在 object 里 面 嵌 套 了 一 个 embed 标 签 ,所 以 会 进 入 这 个 双 重 循 环 for(var i = 0; i < objectFinal.length; i++) for(var j = 0; j < embedFinal.length; j++) { if(objectFinal[i].offsetWidth == embedFinal[j].offsetWidth && objectFinal[i].offsetHeight == embedFinal[j].offsetHeight) { embedFinal.splice(i,1); } } // 添 加 按 钮 for(var i = 0; i < objectFinal.length; i++) { oplayerDiv[i] = objectFinal[i]; obtnDownload[i] = ISFunction.attachButtonDiv(oplayerDiv[i], AttachStyleEnum.AttachOuterTopLeft, "", "isytd://" + videoURL); oplayerDiv[i] = oplayerDiv[i].parentNode; if(oplayerDiv[i] instanceof HTMLObjectElement || oplayerDiv[i] instanceof HTMLEmbedElement) { oplayerDiv[i] = oplayerDiv[i].parentNode; } console.log(oplayerDiv[i]); ISFunction.bind_mouseover(oplayerDiv[i], obtnDownload[i]); } for(var i = 0; i < embedFinal.length; i++) { eplayerDiv[i] = embedFinal[i]; ebtnDownload[i] = ISFunction.attachButtonDiv(eplayerDiv[i], AttachStyleEnum.AttachOuterTopLeft, "", "isytd://" + videoURL); eplayerDiv[i] = eplayerDiv[i].parentNode; if(eplayerDiv[i] instanceof HTMLObjectElement || eplayerDiv[i] instanceof HTMLEmbedElement) { eplayerDiv[i] = eplayerDiv[i].parentNode; } console.log(embedFinal[i]); ISFunction.bind_mouseover(eplayerDiv[i], ebtnDownload[i]); } console.log(videoURL); // 针 对 视 频 在 iframe 里 面 的 情 况 /* window.onload = (function() { var iframe = document.getElementsByTagName("iframe"); console.log(iframe.length); for(var i = 0; i < iframe.length; i++) { var bd = iframe[i].contentWindow.document; //var embed = bd.getElementsByTagName("embed"); if(bd != undefined){ if(bd.getElementsByTagName("embed") != undefined) { console.log(embed); var end = iframe[i]; var parent = iframe[i].parentNode; parent = bd.body.innerHTML; console.log(parent); var btn = ISFunction.attachButtonDiv(end, AttachStyleEnum.AttachOuterTopLeft, "","http://www.viddler.com/"); ISFunction.bind_mouseover(end, btn); } } } }); */ } function htmlFive(element) { var videoURL = document.location.href; videoURL = videoURL.replace(/:/g, "%3A"); var htmlSource = document.getElementsByTagName("html")[0].innerHTML; var vhtml = htmlSource.search("html5-player") != -1; var url = document.location.href; if(vhtml && (url.indexOf("youtube.com") != -1)) { vplayerDiv = document.getElementById("watch-player"); if (vplayerDiv == null) { vplayerDiv = document.getElementById("movie_player-html5"); } vbtnDownload = ISFunction.attachButtonDiv(vplayerDiv, AttachStyleEnum.AttachOuterTopLeft, "", "isytd://" + videoURL); ISFunction.bind_mouseover(vplayerDiv, vbtnDownload); } if(url.indexOf("vimeo.com") != -1 && isHTML5 == true) { vplayerDiv = element.parentNode.parentNode.parentNode; vbtnDownload = ISFunction.attachButtonDiv(vplayerDiv, AttachStyleEnum.AttachOuterTopLeft, "", "isytd://" + videoURL); ISFunction.bind_mouseover(vplayerDiv, vbtnDownload); } } function handleBeforeLoadEvent(event) { var element = event.target; if (element.allowedToLoad) return; if (! (element instanceof HTMLObjectElement || element instanceof HTMLEmbedElement || element instanceof HTMLVideoElement)) return; if (element.getAttribute("classid")) return; if(objectFinal.length > 0) { for(var i = objectFinal.length; i > 0; i--){ ISFunction.unbind_mouseover(oplayerDiv[objectFinal.length - i], obtnDownload[objectFinal.length - i]); ISFunction.deleteAttachedButton(obtnDownload[objectFinal.length - i]); obtnDownload[objectFinal.length - i] = null; objectFinal.splice(objectFinal.length - i,1); obtnDownload.splice(objectFinal.length - i,1); } } if(embedFinal.length >0) { for(var i = embedFinal.length; i > 0; i--){ ISFunction.unbind_mouseover(eplayerDiv[embedFinal.length - i], obtnDownload[embedFinal.length - i]); ISFunction.deleteAttachedButton(ebtnDownload[embedFinal.length - i]); ebtnDownload[embedFinal.length - i] = null; embedFinal.splice(embedFinal.length - i,1); ebtnDownload.splice(embedFinal.length - i,1); } console.log(embedFinal.length); console.log(ebtnDownload.length); console.log("good good good "); } if(vbtnDownload) { ISFunction.unbind_mouseover(vplayerDiv, vbtnDownload); ISFunction.deleteAttachedButton(vbtnDownload); vbtnDownload = null; } isHTML5 = element instanceof HTMLVideoElement; if(isHTML5 == true) { htmlFive(element); } //1 月 31 日 针 对 aol 网 站 beforeload 事 件 执 行 两 次, 增 加 了 一 条 件 判 断 if(document.getElementById("ws") == null) { console.log("ggggggggggggggggggg"); attachButton(); } else { console.log("mmmmmmmmmmmmmmmmmmm"); } } function handleBeforeLoadEventForcollegehumor(event) { var element = event.target; console.log(element); if (element.allowedToLoad) return; //if (! (element instanceof HTMLObjectElement || element instanceof HTMLEmbedElement || element instanceof HTMLVideoElement)) return; //if (!(element instanceof HTMLIFrameElement)) return; if (element.getAttribute("classid")) return; if(objectFinal.length > 0) { for(var i = objectFinal.length; i > 0; i--){ ISFunction.unbind_mouseover(oplayerDiv[objectFinal.length - i], obtnDownload[objectFinal.length - i]); ISFunction.deleteAttachedButton(obtnDownload[objectFinal.length - i]); obtnDownload[objectFinal.length - i] = null; objectFinal.splice(objectFinal.length - i,1); obtnDownload.splice(objectFinal.length - i,1); } } if(embedFinal.length >0) { for(var i = embedFinal.length; i > 0; i--){ ISFunction.unbind_mouseover(eplayerDiv[embedFinal.length - i], obtnDownload[embedFinal.length - i]); ISFunction.deleteAttachedButton(ebtnDownload[embedFinal.length - i]); ebtnDownload[embedFinal.length - i] = null; // elist.splice(i,1); embedFinal.splice(embedFinal.length - i,1); ebtnDownload.splice(embedFinal.length - i,1); } console.log(embedFinal.length); console.log(ebtnDownload.length); console.log("good good good "); } attachButton(); } // 程 序 入 口 var pageURL = document.location.href; // 针 对 vimeo html5 设 置 的 标 志 var isHTML5 = false; if(pageURL.indexOf("godtube.com") != -1 || pageURL.indexOf("abc.go") != -1) { attachButton(); } else if(pageURL.indexOf("collegehumor.com") != -1 || pageURL.indexOf("stupidvideos.com") != -1 || pageURL.indexOf("vevo.com") != -1) { // collegehumor.com 网 站 比 较 特 殊,当 点 击 列 表 里 的 视 频 选 择 播 方 放 时,播 放 的 视 频 变 化 了,但 是 响 应 的 embed 标 签 内 容 没 有 任 何 变 化, // 于 是 之 前 通 过event.target == HTMLEmbedElement 判 断 是 否 处 理 监 听 到 的beforeload 事 件,变 的 没 有 了 效 果。 attachButton(); document.addEventListener("beforeload", handleBeforeLoadEventForcollegehumor, true); } else { attachButton(); htmlFive(); document.addEventListener("beforeload", handleBeforeLoadEvent, true); } })();_application/javascriptOpbplist0067X$versionX$objectsY$archiverT$top%&-./012U$null R$6R$2R$7R$3R$8V$classR$4R$9R$0R$5R$1   !"#[NS.relativeWNS.base_ksafari-extension://com.wondershare.safari.itubestudio-NHUBVJKX59/f9f705bd/analysismodule/website_extract.js'()*Z$classnameX$classesUNSURL+,UNSURLXNSObject#A<Ӧ_application/javascript7q#'(34]NSURLResponse5,]NSURLResponse_NSKeyedArchiver89_WebResourceResponse#-27CI`cfilovy|*/:CILR[df:_ksafari-extension://com.wondershare.safari.itubestudio-NHUBVJKX59/f9f705bd/analysismodule/website_extract.jsOvar ISMyTubeFunction = { // 提取Flash的参数 extractFlashvars: function(node) { var element = node; if (element === undefined || (typeof(element) != "object" && typeof(element) != "function")) { element = document; } var objectLists; if (element instanceof HTMLObjectElement) { objectLists = []; objectLists.push(element); } else { objectLists = element.getElementsByTagName("object"); } var flashvars = null; for (var i = 0; i < objectLists.length; i++) { paramLists = objectLists[i].childNodes; for (var j = 0; j < paramLists.length; j++) { if (paramLists[j].nodeType != Node.ELEMENT_NODE) continue; var tempVars = paramLists[j].getAttribute("name"); if (tempVars == "flashvars") { flashvars = paramLists[j].getAttribute("value"); break; } } if (flashvars) break; } if (!flashvars) { var embedLists; if (element instanceof HTMLObjectElement) { embedLists = []; embedLists.push(element); } else { embedLists = element.getElementsByTagName("embed"); } for (var i = 0; i < embedLists.length; i++) { flashvars = embedLists[i].getAttribute("flashvars"); if (flashvars) break; } } return flashvars; }, // 提取Flash参数数组 extractFlashvarsArr: function(node) { var element = node; if (element === undefined || (typeof(element) != "object" && typeof(element) != "function")) { element = document; } var objectLists = element.getElementsByTagName("object"); var flashvars = new Array(); for (var i = 0; i < objectLists.length; i++) { paramLists = objectLists[i].childNodes; for (var j = 0; j < paramLists.length; j++) { if (paramLists[j].nodeType != Node.ELEMENT_NODE) continue; var tempVars = paramLists[j].getAttribute("name"); if (tempVars == "flashvars") { flashvars.push(paramLists[j].getAttribute("value")); break; } } } if (flashvars.length <= 0) { var embedLists = element.getElementsByTagName("embed"); for (var i = 0; i < embedLists.length; i++) { flashvars.push(embedLists[i].getAttribute("flashvars")); } } return flashvars; }, // 提取Flash播放参数 extractFlashSrc: function(node) { // 提取Flash的地址与参数 if (node == undefined ||(typeof(node) != "object" && typeof(node) != "function")) node = document; var flashNode = node.getElementsByTagName("object"); var src, flashvars; if (flashNode && flashNode.length > 0) { var isFindVisibleNode = false; for (var i = 0; i < flashNode.length; i++) { if (ISFunction.isVisible(flashNode[i])) { flashNode = flashNode[i]; isFindVisibleNode = true; break; } } if (isFindVisibleNode) { var objectParams = flashNode.childNodes; for (var i = 0; i < objectParams.length; i++) { if (objectParams[i].nodeType != Node.ELEMENT_NODE) continue; var tempVars = objectParams[i].getAttribute("name"); if (tempVars == "flashvars") { flashvars = objectParams[i].getAttribute("value"); break; } } src = flashNode.getAttribute("data"); } } if (!isFindVisibleNode) { flashNode = node.getElementsByTagName("embed"); if (flashNode) { var isFindVisibleNode = false; for (var i = 0; i < flashNode.length; i++) { if (ISFunction.isVisible(flashNode[i])) { flashNode = flashNode[i]; isFindVisibleNode = true; break; } } if (!isFindVisibleNode) return; src = flashNode.getAttribute("src"); flashvars = flashNode.getAttribute("flashvars"); } } if ((src && src.length > 0) && (flashvars && flashvars.length > 0)) { src += "?" + flashvars; } return src; }, // 提取Flash元素 extractFlashElement: function(node) { // 提取Flash的地址与参数 if (node == undefined || (typeof(node) != "object" && typeof(node) != "function")) node = document; var flashNode = node.getElementsByTagName("object"); if (flashNode && flashNode.length > 0) { var isFindVisibleNode = false; for (var i = 0; i < flashNode.length; i++) { if (ISFunction.isVisible(flashNode[i])) { flashNode = flashNode[i]; isFindVisibleNode = true; break; } } } if (!isFindVisibleNode) { flashNode = node.getElementsByTagName("embed"); if (flashNode) { var isFindVisibleNode = false; for (var i = 0; i < flashNode.length; i++) { if (ISFunction.isVisible(flashNode[i])) { flashNode = flashNode[i]; isFindVisibleNode = true; break; } } if (!isFindVisibleNode) return; } } return flashNode; }, // 获取网页标题 getWebTitle: function() { kdocTitle = document.title; // 标题 if (kdocTitle == null) { var t_titles = document.getElementsByTagName("title"); if (t_titles && t_titles.length > 0) { kdocTitle = t_titles[0]; }else { kdocTitle = ""; } } return kdocTitle; }, // 生成WSYTD链接 generateWSYTDUrl: function(videoURL, videoPageURL, videoTitle) { var separator = "-WS-GUES-"; var wsytdURL = ""; if (videoURL.length <= 0) { // 动态分析只需要视频页面地址即可,直接返回 videoPageURL = videoPageURL.replace(/:/g,"%3A"); wsytdURL += videoPageURL; wsytdURL = "isytd://" + wsytdURL; return wsytdURL; } else { // 静态分析需要视频真是下载地址、视频页面地址、视频名称 wsytdURL += videoURL; wsytdURL += separator; wsytdURL += videoPageURL; wsytdURL += separator; if (!videoTitle) { wsytdURL += ' ' } else { wsytdURL += videoTitle; } } // 将http://中的:替换为%3A以便支持主程序 var colonPos = wsytdURL.indexOf(':'); if (colonPos == -1) { return null; } wsytdURL = wsytdURL.substring(0, colonPos) + "%3A" + wsytdURL.substring(colonPos + 1, wsytdURL.length); wsytdURL = "isytd://" + wsytdURL; return wsytdURL; }, // 生成WSYTD链接 getWSYTDUrl: function(videoURL) { var videoPageURL = window.location.href; var videoTitle = this.getWebTitle(); var wsytdURL; if (typeof(videoURL) == "string") { // 单个视频地址直接返回字符串 wsytdURL = this.generateWSYTDUrl(videoURL, videoPageURL, videoTitle); } else if (typeof(videoURL) == "object" && videoURL.length) { // 多个视频地址返回字符串数组 if (videoURL.length > 1) { wsytdURL = []; for (var i = 0; i < videoURL.length; i++) { wsytdURL.push([videoURL[i][0], this.generateWSYTDUrl(videoURL[i][1], videoPageURL, videoTitle)]); } } else { wsytdURL = this.generateWSYTDUrl(videoURL[0][1], videoPageURL, videoTitle); } } else { // 没有获取到视频地址则返回页面地址供主程序进行动态分析 wsytdURL = this.generateWSYTDUrl("", videoPageURL, ""); } return wsytdURL; } };_application/javascriptOabplist0067X$versionX$objectsY$archiverT$top%&-./012U$null R$6R$2R$7R$3R$8V$classR$4R$9R$0R$5R$1   !"#[NS.relativeWNS.base_\safari-extension://com.wondershare.safari.itubestudio-NHUBVJKX59/f9f705bd/mytubefunctions.js'()*Z$classnameX$classesUNSURL+,UNSURLXNSObject#A<S_application/javascript#'(34]NSURLResponse5,]NSURLResponse_NSKeyedArchiver89_WebResourceResponse#-27CI`cfilovy| +4:=CLUWps|:_\safari-extension://com.wondershare.safari.itubestudio-NHUBVJKX59/f9f705bd/mytubefunctions.jsO6var AttachStyleEnum = { AttachOuterTopLeft: 0, AttachOuterTopRight: 1, AttachOuterBottomLeft: 2, AttachOuterBottomRight: 3, AttachInnerTopLeft: 4, AttachInnerTopRight: 5, AttachInnerBottomLeft: 6, AttachInnerBottomRight: 7 } // 这里加上了命名空间,回调函数中的变量直接使用ISFunction.这种方式来读取的,其余使用this.读取。 var ISFunction = { // variants attachButtonList: [], isInitialAdjustPos: false, timeout: 500, closetimer: 0, ddmenuitem: 0, timeoutHandle: null, onShowElement: null, onDelayHideElement: null, // functions newGuid: function() { var guid = ""; for (var i = 1; i < 32; i++) { var n = Math.floor(Math.random() * 16.0).toString(16); guid += n; if ((i == 8) || (i == 12) || (i == 16) || (i == 20)) guid += "-"; } return guid; }, getPreviousSibling: function(n) { var x = n.previousSibling; while (x.nodeType != 1) { x = x.previousSibling; } return x; }, // 获取元素实际显示的位置 getElementPos: function(el) { var ua = navigator.userAgent.toLowerCase(); var isOpera = (ua.indexOf('opera') != -1); var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof if (el.parentNode === null || (el.style != null && el.style.display == 'none')) { return false; } var parent = null; var pos = []; var box; if (el.getBoundingClientRect) // IE { box = el.getBoundingClientRect(); var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop); var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft); return { x: box.left + scrollLeft, y: box.top + scrollTop }; } else if (document.getBoxObjectFor) // gecko { box = document.getBoxObjectFor(el); var borderLeft = (el.style.borderLeftWidth) ? parseInt(el.style.borderLeftWidth) : 0; var borderTop = (el.style.borderTopWidth) ? parseInt(el.style.borderTopWidth) : 0; pos = [box.x - borderLeft, box.y - borderTop]; } else // safari & opera { pos = [el.offsetLeft, el.offsetTop]; parent = el.offsetParent; if (parent != el) { while (parent) { //console.log(parent.class); pos[0] += parent.offsetLeft; pos[1] += parent.offsetTop; parent = parent.offsetParent; } } if (ua.indexOf('opera') != -1 || (ua.indexOf('safari') != -1 && (el.style != null && el.style.position == 'absolute'))) { pos[0] -= document.body.offsetLeft; pos[1] -= document.body.offsetTop; } } if (el.parentNode) { parent = el.parentNode; } else { parent = null; } while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') { // account for any scrolled ancestors pos[0] -= parent.scrollLeft; pos[1] -= parent.scrollTop; if (parent.parentNode) { parent = parent.parentNode; } else { parent = null; } } return { x: pos[0], y: pos[1] }; }, // 判断元素是否显示(可能不能跨浏览器) isVisible: function(element) { return (element.clientHeight > 0 || element.clientWidth > 0); }, // 计算附加按钮的位置 calculateButtonPos: function(attachedElement, buttonDiv, attachStyle) { // alter the button's position var btnWidth = buttonDiv.offsetWidth; var btnHeight = buttonDiv.offsetHeight; var pos = this.getElementPos(attachedElement); var beforeChildLeft = pos.x; var beforeChildTop = pos.y; var divLeft = 0; var divTop = 0; switch (attachStyle) { case AttachStyleEnum.AttachOuterTopLeft: { divLeft = beforeChildLeft; divTop = beforeChildTop - btnHeight; break; } case AttachStyleEnum.AttachOuterTopRight: { divLeft = beforeChildLeft + attachedElement.offsetWidth - btnWidth; divTop = beforeChildTop - btnHeight; break; } case AttachStyleEnum.AttachOuterBottomLeft: { divLeft = beforeChildLeft; divTop = beforeChildTop + attachedElement.offsetHeight; break; } case AttachStyleEnum.AttachOuterBottomRight: { divLeft = beforeChildLeft + attachedElement.offsetWidth - btnWidth; divTop = beforeChildTop + attachedElement.offsetHeight; break; } case AttachStyleEnum.AttachInnerTopLeft: { divLeft = beforeChildLeft; divTop = beforeChildTop; break; } case AttachStyleEnum.AttachInnerTopRight: { divLeft = beforeChildLeft + attachedElement.offsetWidth - btnWidth; divTop = beforeChildTop; break; } case AttachStyleEnum.AttachInnerBottomLeft: { divLeft = beforeChildLeft; divTop = beforeChildTop + attachedElement.offsetHeight - btnHeight; break; } case AttachStyleEnum.AttachInnerBottomRight: { divLeft = beforeChildLeft + attachedElement.offsetWidth - btnWidth; divTop = beforeChildTop + attachedElement.offsetHeight - btnHeight; break; } } return { x: divLeft, y: divTop }; }, // 获取附加按钮 getButtonElement: function(attachedElement) { for (var i = 0; i < ISFunction.attachButtonList.length; i++) { if (attachedElement == ISFunction.attachButtonList[i].attachedElement) return WSFuntion.attachButtonList[i].buttonDiv; } }, // 调整按钮的位置 adjustAttachButtonPos: function() { for (var i = 0; i < ISFunction.attachButtonList.length; i++) { attachedElement = ISFunction.attachButtonList[i].attachedElement; buttonDiv = ISFunction.attachButtonList[i].buttonDiv; attachStyle = ISFunction.attachButtonList[i].attachStyle; var divPos = ISFunction.calculateButtonPos(attachedElement, buttonDiv, attachStyle); buttonDiv.style.left = divPos.x.toString() + 'px'; buttonDiv.style.top = divPos.y.toString() + 'px'; } }, // 删除附加的按钮 deleteAttachedButton: function(button) { for (var i = 0; i < ISFunction.attachButtonList.length; i++) { if (ISFunction.attachButtonList[i].buttonDiv === button) { ISFunction.attachButtonList.splice(i, 1); document.body.removeChild(button); break; } } }, // 附加按钮 attachButtonDiv: function(attachedElement, attachStyle, buttonCaption, buttonLink, divId, buttonId) { // Create div element if (!attachedElement) return; var downloadDiv = document.createElement("div"); downloadDiv.setAttribute("id", "ws"); downloadDiv.setAttribute("style", "z-index: 2147483647; background: transparent; position: absolute;"); if (divId) downloadDiv.setAttribute("id", divId); downloadDiv.style.visibility = 'hidden'; //downloadDiv.style.visibility = 'visible'; // Create button element var btnDownload = document.createElement("a"); btnDownload.setAttribute("class", "fantasybutton"); btnDownload.setAttribute("href", "javascript:void(0);"); //btnDownload.setAttribute("href", buttonLink); btnDownload.addEventListener("click", function(){ this.blur(); if (buttonLink) window.location.href = buttonLink; downloadDiv.style.visibility = 'hidden'; return false; }); btnDownload.style.cursor = "pointer"; var btnText = document.createElement("span"); if (buttonCaption) btnText.innerHTML = buttonCaption; btnDownload.appendChild(btnText); downloadDiv.appendChild(btnDownload); var body = document.body; body.insertBefore(downloadDiv, body.lastChild); var divPos = this.calculateButtonPos(attachedElement, downloadDiv, attachStyle); downloadDiv.style.left = divPos.x.toString() + 'px'; downloadDiv.style.top = divPos.y.toString() + 'px'; // initial onresize event if (!this.isInitialAdjustPos) { window.addEventListener("resize", ISFunction.adjustAttachButtonPos, false); //window.addEventListener("DOMNodeInserted", ISFunction.adjustAttachButtonPos, false); this.isInitialAdjustPos = true; } // push attachButtonInfo into attachButtonList var attachButtonInfo = {attachedElement: attachedElement, buttonDiv: downloadDiv, attachStyle: attachStyle}; ISFunction.attachButtonList.push(attachButtonInfo); return downloadDiv; }, // open hidden layer mopen: function(id) { // cancel close timer ISFunction.mcancelclosetime(); // close old layer if (ISFunction.ddmenuitem) ISFunction.ddmenuitem.style.visibility = 'hidden'; // get new layer and show it ISFunction.ddmenuitem = document.getElementById(id); if (ISFunction.ddmenuitem) { ISFunction.ddmenuitem.style.visibility = 'visible'; } }, // close showed layer mclose: function() { if (ISFunction.ddmenuitem) ISFunction.ddmenuitem.style.visibility = 'hidden'; }, // go close timer mclosetime: function() { ISFunction.closetimer = window.setTimeout(ISFunction.mclose, ISFunction.timeout); }, // cancel close timer mcancelclosetime: function() { if (ISFunction.closetimer) { window.clearTimeout(ISFunction.closetimer); ISFunction.closetimer = null; } }, // 附加下拉按钮菜单 attachDropdownMenu: function(attachedElement, attachStyle, buttonCaption, itemArray, divId, buttonId) { // Create div element if (!attachedElement || !itemArray) return; var downloadDiv = document.createElement("div"); downloadDiv.setAttribute("style", "z-index: 2147483647; background: transparent; position: absolute;"); if (divId) downloadDiv.setAttribute("id", divId); downloadDiv.style.visibility = 'hidden'; // Create menu element var ulElement = document.createElement("ul"); ulElement.setAttribute("id", "mytubem"); var liElement = document.createElement("li"); ulElement.appendChild(liElement); var btnElement = document.createElement("a"); btnElement.setAttribute("href", "javascript:void(0);"); btnElement.setAttribute("class", "fantasybutton"); if (buttonCaption) btnElement.innerHTML = buttonCaption; // tag a addEventListener var guid = this.newGuid(); btnElement.addEventListener("click", function() { this.blur(); ISFunction.mopen(guid); return false; }, false); btnElement.addEventListener("mouseover", function() { ISFunction.mcancelclosetime() }, false); btnElement.addEventListener("mouseout", function() { ISFunction.mclosetime() }, false); liElement.appendChild(btnElement); var divMenu = document.createElement("div"); divMenu.setAttribute("id", guid); // tag div addEventListener divMenu.addEventListener("mouseover", function() { ISFunction.mcancelclosetime() }, false); divMenu.addEventListener("mouseout", function() { ISFunction.mclosetime() }, false); liElement.appendChild(divMenu); for (var i = 0; i < itemArray.length; i++) { var url = itemArray[i][1] ? itemArray[i][1] : "#"; var aItem = document.createElement("a"); aItem.setAttribute("href", url); aItem.addEventListener("click", function() { ISFunction.mclose(); downloadDiv.style.visibility = 'hidden'; }, false); aItem.style.cursor = "pointer"; aItem.innerHTML = itemArray[i][0]; divMenu.appendChild(aItem); } downloadDiv.appendChild(ulElement); var body = document.body; body.insertBefore(downloadDiv, body.lastChild); var divPos = this.calculateButtonPos(attachedElement, downloadDiv, attachStyle); downloadDiv.style.left = divPos.x.toString() + 'px'; downloadDiv.style.top = divPos.y.toString() + 'px'; // initial onresize event if (!this.isInitialAdjustPos) { window.addEventListener("resize", ISFunction.adjustAttachButtonPos, false); //window.addEventListener("DOMNodeInserted", ISFunction.adjustAttachButtonPos, false); this.isInitialAdjustPos = true; } // push attachButtonInfo into attachButtonList var attachButtonInfo = {attachedElement: attachedElement, buttonDiv: downloadDiv, attachStyle: attachStyle}; ISFunction.attachButtonList.push(attachButtonInfo); return downloadDiv; }, showElement: function(tipElement) { if (ISFunction.timeoutHandle) clearTimeout(this.timeoutHandle); if (tipElement) { tipElement.style.visibility = "visible"; } }, hideElement: function(tipElement) { if (ISFunction.timeoutHandle) clearTimeout(this.timeoutHandle); if (tipElement) { tipElement.style.visibility = "hidden"; } }, delayHideElement: function(tipElement) { ISFunction.timeoutHandle = setTimeout(function() { ISFunction.hideElement(tipElement) }, 500); }, // 绑定鼠标经过事件 bind_mouseover: function(divElement, tipElement) { if (typeof(divElement) == "string") { divElement = document.getElementById(divElement); tipElement = document.getElementById(tipElement); } if (divElement == null || tipElement == null) return; divElement.addEventListener("mouseover", this.onShowElement = function() { ISFunction.adjustAttachButtonPos(); ISFunction.showElement(tipElement); }, false); divElement.addEventListener("mouseout", this.onDelayHideElement = function() { ISFunction.delayHideElement(tipElement); }, false); tipElement.addEventListener("mouseover", function() { ISFunction.showElement(tipElement); }, false); tipElement.addEventListener("mouseout", function() { ISFunction.delayHideElement(tipElement); }, false); }, // 取消绑定鼠标经过事件 unbind_mouseover: function(divElement, tipElement) { if (typeof(divElement) == "string") { divElement = document.getElementById(divElement); tipElement = document.getElementById(tipElement); } if (this.onShowElement && divElement) { divElement.removeEventListener("mouseover", ISFunction.onShowElement, false); } if (this.onDelayHideElement && divElement) { divElement.removeEventListener("mouseout", ISFunction.onDelayHideElement, false); } if (this.onShowElement && tipElement) { tipElement.removeEventListener("mouseover", ISFunction.onShowElement, false); } if (this.onDelayHideElement && tipElement) { tipElement.removeEventListener("mouseout", ISFunction.onDelayHideElement, false); } } };_application/javascriptO[bplist0067X$versionX$objectsY$archiverT$top%&-./012U$null R$6R$2R$7R$3R$8V$classR$4R$9R$0R$5R$1   !"#[NS.relativeWNS.base_Vsafari-extension://com.wondershare.safari.itubestudio-NHUBVJKX59/f9f705bd/functions.js'()*Z$classnameX$classesUNSURL+,UNSURLXNSObject#A<Ց_application/javascript6#'(34]NSURLResponse5,]NSURLResponse_NSKeyedArchiver89_WebResourceResponse#-27CI`cfilovy|%.47=FOQjmv{:_Vsafari-extension://com.wondershare.safari.itubestudio-NHUBVJKX59/f9f705bd/functions.js 1<Zlۧ۱yt}1^1w34;4Dkk-mm