Post on 24-Feb-2016
description
Applying Semantic Technologies to Asset and Configuration
Management in the Enterprise
Taylor CowanBrian Boyd
Travelocity.com
Agenda
• RDF intro• Problem space• Demo Real Software• ASYDEO Ontology• Learn about how we built it
RDF != XML
“The site at http://www.travelocity.com, also known as Travelocity, is an online travel agency competing with expedia.com”
Conceptual Model
Travelocity.comAKA
Travelocity
Online travel
agency
Expedia.com
Same concepts serialized as “N3”
:OnlineTravelAgency
a owl:Class .
:hasCompetitor
a rdf:Property .
<http://www.travelocity.com>
a :OnlineTravelAgency ;
rdfs:label "Travelocity"@en ;
:hasCompetitor <http://www.expedia.com> .
As RDF/XML…<rdf:RDF …>
<owl:Class rdf:about="http://foo#OnlineTravelAgency"/>
<rdf:Property rdf:about="http://foo#hasCompetitor"/>
<OnlineTravelAgency
rdf:about="http://www.travelocity.com">
<hasCompetitor rdf:resource="http://www.expedia.com"/>
<rdfs:label xml:lang="en">Travelocity</rdfs:label>
</OnlineTravelAgency>
</rdf:RDF>
As N-Triples canonical format…
<hasCompetitor> <rdf:type> <rdf:Property> .
<http://travelocity.com> <hasCompetitor> <http://expedia.com> .
<http://travelocity.com> <rdfslabel> "Travelocity"@en .
<http://travelocity.com> <rdf:type> <OnlineTravelAgency> .
<OnlineTravelAgency> <rdf:type> <owl:Class> .
Subject, Verb, Object…
And finally, as Java code…
OntModel m = ModelFactory.createOntologyModel();
OntClass ota = m.createClass("OnlineTravelAgency");
Individual tvly = ota.createIndividual("http://www.travelocity.com");
tvly.setLabel("Travelocity", "en");
OntProperty p = m.createOntProperty("hasCompetitor");
tvly.setPropertyValue(p, m.createResource("http://www.expedia.com"));
“Understanding the relationships between systems, software, and the business processes they enable”.
Ontology
Software People
Systems
Business processes
Travelocity Systems Knowledge
• 42,000 explicit assertions.
Problems ASYDEO Solves
• If a change is made to an application, what could be impacted?
• Rate of change exceeds our capacity to manage documentation, is there an alternative?
• What URL/ports should we monitor?
demo
SPARQL #1Question: What other software does software named
“air-shopping” with version “1.0” connect to?
?srcSoftware
?sap
?service
?dstSoftware
Conn
ects
to
Acce
ssed b
y
Prov
ides s
ervic
e
version=“1.0”label=“air-shopping”
SELECT DISTINCT ?dstSoftware WHERE {
?srcSoftware a asydeo:ApplicationSoftware . ?srcSoftware rdfs:label ?label .
?srcSoftware :version "1.0" . ?srcSoftware :connectsTo ?sap . ?service :isAccessedBy ?sap . ?dstSoftware :providesService ?service . FILTER regex(?label, "air-shopping", "i") }
?srcSoftware
?sap
?service
?dstSoftware
Conn
ects
to
Acce
ssed b
y
Prov
ides s
ervic
e
version=“1.0”label=“air-shopping”
SPARQL #2What System Services are provided by Computer System “srvhlp550”?
SELECT DISTINCT ?service WHERE { ?system rdfs:label "srvhlp550" . ?system a :System . { ?system :hasInstalled ?software }
UNION { ?cluster :hasMember ?system .?cluster :hasInstalled ?software } .?software :providesService ?service }
Asydeo basicsApache 2.0 license
Working software
Open to contribution
Java/Jena based
http://asydeo.googlecode.co
m
ASYDEO Platform
Jetty (or any servlet container)
Stripes 1.5
jquery
Jena 2.7
Jenabean
How the UI works
• Our ontology declares a set of widgets
Each Widget has a Server Side representation
Ontology provides UI with tips for how to show each property
hasModel
Path from property to java…
• Has editorhasModel • Has type
Basic DropDown
• Maps to Java class
DropDown
In Raw RDF (N3 format)
schema:hasModel a owl:FunctionalProperty , owl:ObjectProperty ;
rdfs:domain schema:System ; rdfs:label "Model"^^xsd:string ; rdfs:range schema:Model ; schema:editor schema:BasicDropDown; schema:order "94" . schema:BasicDropDown a schema:DropDown .
Included because RDF type is in property hasModel’s domain.
schema:hasModel rdfs:domain schema:System
Candidates from the property’s range(rdfs:range schema:Model)
schema:hasModel rdfs:range schema:Model
The property’s RDF Label provides human readable label text
schema:hasModel rdfs:label "Model"^^xsd:string
The property’s position, relative to other items comes from ontology as well.
schema:hasModel schema:order "94“
Future Work
Auto-discovery Scripts
Systems Engineering
(ASYDEO)
Network dumps
Deployed software manifests
System uptime and configuration
rdf
rdf
rdf
Some Advantages We Discovered
CMDB (mysql)
Flat/tabular model
Code and database cognizant of ontology
No restriction language
All data must be explicit
ASYDEO (Jena)
Hierarchical
Code is ontology agnostic
OWL provides restrictions
Some data is inferred