.. BACowl Introduction

Introduction
============

What is BACnet?
---------------

    **BACnet - A Data Communication Protocol for Building Automation and Control Networks**

    Developed under the auspices of the American Society of Heating, Refrigerating and Air-Conditioning Engineers (ASHRAE), BACnet is 
    an American national standard, a European standard, a national standard in more than 30 countries, and an ISO global standard. The 
    protocol is supported and maintained by ASHRAE Standing Standard Project Committee 135. [#f1]_

    BACnet has been designed specifically to meet the communication needs of building automation and control systems for applications 
    such as heating, ventilating, and air-conditioning control, lighting control, access control, and fire detection systems. The BACnet 
    protocol provides mechanisms by which computerized equipment of arbitrary function may exchange information, regardless of the 
    particular building service it performs. As a result, the BACnet protocol may be used by head-end computers, general-purpose direct 
    digital controllers, and application specific or unitary controllers with equal effect. [#f2]_

    This protocol provides a comprehensive set of messages for conveying encoded binary, analog, and alphanumeric data between devices 
    including, but not limited to:

    (a) hardware binary input and output values,
    (b) hardware analog input and output values,
    (c) software binary and analog values,
    (d) text string values,
    (e) schedule information,
    (f) alarm and event information,
    (g) files, and
    (h) control logic.

What is an Ontology?
--------------------

    An ontology is a description of a domain. Ontologies can be written in various
    formats and can be used by computers to reason about the domain they describe.
    They are also useful as a common format that allows for exchange of knowledge
    across applications and platforms. [#f4]_

    The ontologies for this project are written in OWL 2. OWL 2 is an ontology language
    that defines the concepts you can use to write an ontology. If you're not familiar
    with ontologies, take a few minutes and explore the following links:

    * `Ontology (information science) <http://en.wikipedia.org/wiki/Ontology_%28information_science%29>`_
    * `What is an Ontology? (Stanford) <http://www-ksl.stanford.edu/kst/what-is-an-ontology.html>`_
    * `OWL Web Ontology Language (W3C) <http://www.w3.org/TR/owl-features/>`_
    * `Web Ontology Language (Wikipedia) <http://en.wikipedia.org/wiki/Web_Ontology_Language>`_

BACowl BACnet Ontology
----------------------

The BACnet Ontology (BACowl) is a description of the contents of the BACnet standard in a machine 
readable format suitable for formal analysis.  It is written in Turtle [#f5]_ but can also be 
expressed into a wide variety of other formats.

By translating the descriptions of the objects, properties, and communications messages 
into a formal language like OWL and applying analysis to the result, we hope to provide 
a cohesive description of the standard that can be incorporated into other formal models.

BACnet Publications
-------------------

BACnet has two ASHRAE publications:

* `Standard 135-2012 <http://www.techstreet.com/products/1852610>`_ BACnet--A Data Communication Protocol for Building Automation and Control Networks

The purpose of Standard 135 is to define data communication services and protocols for computer equipment used for monitoring and control 
of HVAC&R and other building systems and to define, in addition, an abstract, object-oriented representation of information communicated 
between such equipment, thereby facilitating the application and use of digital control technology in buildings.

* `Standard 135.1-2011 <http://www.techstreet.com/products/1831270>`_ Method of Test for Conformance to BACnet

Standard 135.1-2011 defines a standard method for verifying that an implementation of the BACnet protocol provides each capability claimed 
in its Protocol Implementation Conformance Statement (PICS) in conformance with the BACnet standard (Standard 135). It provides a 
comprehensive set of procedures for verifying the correct implementation of each claimed capability, including BACnet services (as 
initiators, executors, or both), BACnet object-types (including both required properties and optional properties), the BACnet network 
layer protocol, data link options, and all special functionalities. [#f3]_

.. rubric:: Footnotes

.. [#f1] Text from the BACnet `home page <http://www.bacnet.org>`_
.. [#f2] Text from Techstreet description `Standard 135-2012 <http://www.techstreet.com/products/1852610>`_
.. [#f3] Text from Techstreet description `Standard 135.1-2011 <http://www.techstreet.com/products/1831270>`_
.. [#f4] Text inspired from the `Introduction to Ontologies with Protege 
    <https://wiki.csc.calpoly.edu/OntologyTutorial/wiki/IntroductionToOntologiesWithProtege>`_
.. [#f5] `Turtle - Terse RDF Triple Language <http://www.w3.org/TeamSubmission/turtle/>`_