210 likes | 223 Views
Ontology-Based Free-Form Query Processing for the Semantic Web. by Mark Vickers. Supported by:. The Problem. Searching the web for an answer to a question is hard. Returns documents (usually too many) Can it instead return just the right answers? Semantic web
E N D
Ontology-Based Free-Form Query Processing for the Semantic Web by Mark Vickers Supported by:
The Problem • Searching the web for an answer to a question is hard. • Returns documents (usually too many) • Can it instead return just the right answers? • Semantic web • Proposed ontology-based framework for making information machine-readable • Better access to information • How should semantic web be searched?
Solution: AskOntos – a Query System for the Semantic Web • Allows free-form queries • Processes queries using information extraction • Returns tables of extracted values
Extraction Ontologies Object sets Relationship sets Participation constraints Lexical Non-lexical Primary object set Aggregation Generalization/Specialization
Extraction Ontologies Data Frame: Internal Representation: float Value Phrase Value Expression: \s*[$]\s*(\d{1,3})*(\.\d{2})? Left Context: $ Key Word Phrase Key Word Expression: ([Pp]rice)|([Cc]ost)| … Operation Phrase Operator: > Expression: (more\s*than)|(more\s*costly)|…
AskOntos Overview Extraction Ontology Repository Query AskOntos Ontology Matching Extracted Values Extracted Values Extracted Values Extracted Query Values Extracted Data Extracted Values Form XQuery Web Answer
Step 1. Parse Query “Find me the and of all s – I want a ” price mileage red Nissan 1998 or newer >= Operator
Step 2. Find Corresponding Ontology “Find me the price and mileage of all red Nissans – I want a 1998 or newer” >= Operator Similarity value: 2 Similarity value: 6
<Car rdf:ID="CarIns7"> <CarValue rdf:datatype="&xsd;string">7</CarValue> </Car> <Makerdf:ID="MakeIns7"> <MakeValuerdf:datatype="&xsd;string">Nissan</MakeValue> <ontos:URIrdf:datatype="&xsd;string">MakeIns7</ontos:URI> <offset rdf:datatype="&xsd;nonNegativeInteger">41893</offset> </Make> <Year rdf:ID="YearIns7"> <YearValue rdf:datatype="&xsd;string">1999</YearValue> <ontos:URI rdf:datatype="&xsd;string">YearIns7</ontos:URI> <offset rdf:datatype="&xsd;nonNegativeInteger">41641</offset> </Year> <Color rdf:ID="ColorIns7"> <ColorValuerdf:datatype="&xsd;string">red</ColorValue> <ontos:URI rdf:datatype="&xsd;string">ColorIns7</ontos:URI> <offset rdf:datatype="&xsd;nonNegativeInteger">42186</offset> </Color> <owl:Thing rdf:about="#CarIns7"> <hasMakerdf:resource="#MakeIns7"/> <hasYearrdf:resource="#YearIns7" /> <hasColorrdf:resource="#ColorIns7"/> <hasMileagerdf:resource="#MileageIns7"/> <hasPricerdf:resource="#PriceIns7"/> </owl:Thing> Step 3. Formulate XQuery Expression Conjunctive queries run over selected ontology’s extracted values
Step 3. Formulate XQuery Expression • Value-phrase-matching words determine conditions • Conditions: • Color = “red” • Make = “Nissan” • Year >= 1998 >= Operator
Step 3. Formulate XQuery Expression 1: for$docindocument("file:///c:/ontos/owlLib/Car.OWL")/rdf:RDF 2: for$Recordin$doc/owl:Thing 3: 4: let$id := substring-after(xs:string($Record/@rdf:about), "CarIns") 5: let$Color := $doc/car:Color[@rdf:ID=concat("ColorIns", $id)]/car:ColorValue/text() 6: let$Make := $doc/car:Make[@rdf:ID=concat("MakeIns", $id)]/car:MakeValue/text() 7: let$Year := $doc/car:Year[@rdf:ID=concat("YearIns", $id)]/car:YearValue/text() 8: let$Price := $doc/car:Price[@rdf:ID=concat("PriceIns", $id)]/car:PriceValue/text() 9: let$Mileage := $doc/car:Mileage[@rdf:ID=concat("MileageIns", $id)]/car:MileageValue/text() 10: 11: where($Color="red" orempty($Color)) and 12: ($Make="Nissan" orempty($Make)) and 13: ($Year>="1998" orempty($Year)) 14: return <Record ID="{$id}"> 15: <Price>{$Price}</Price> 16: <Mileage>{$Mileage}</Mileage> 17: <Color>{$Color}</Color> 18: <Make>{$Make}</Make> 19: <Year>{$Year}</Year> 20: </Record> For each owl:Thing Get the instance ID and extracted values Check conditions Return values
Step 4. Run XQuery Expression Over Ontology’s Extracted Data • Uses Qexo 1.7, GNU’s XQuery engine for Java • Use XSLT to transform results to HTML table
Evaluation of AskOntos • Measure success by: • Ability to match query to correct ontology • Ability to translate free-form queries into formal queries • We create: • Extraction ontologies for: car ads, diamonds, … • Queries for preliminary evaluation: 10 Conjunctive queries for car ads • Future work: do more evaluation
Query Translation Metrics “Find me the price and mileage of all red Nissans – I want a 1998 or newer.” for$docin document("file:///.../Car.OWL")/rdf:RDF for$Recordin$doc/owl:Thing … where($Color="red" orempty($Color)) and ($Make="Nissan" orempty($Make)) and ($Year="1998" orempty($Year)) return <Record ID="{$id}"> <Price>{$Price}</Price> <Color>{$Color}</Color> <Make>{$Make}</Make> <Year>{$Year}</Year> </Record> Human conversion PROJECT: {Price, Mileage,Color, Make, Year} SELECT: {(Color,=,“red”), (Make,=,“Nissan”), (Year,>=,“1998”)} Automated conversion PROJECT: {Price,Color, Make, Year} SELECT: {(Color,=,“red”), (Make,=,“Nissan”), (Year,=,“1998”)}
Preliminary Results 1. Find me a 1994 red Nissan for $2000 2. Find me the price and mileage of all red Nissans – I want a 1998 or newer. 3. Find me a black Ford for under $8000 -- it should be a 1990 or newer and have less than 120K miles on it. 4. Show me the year of all chevy corvettes for less than $25,000. 5. I want the year, price, mileage, and color of all Toyota Camrys 6. What 2002 cars cost less than $9,000? 7. I want a 1998 or newer Ford for $10,000 or less 8. I want the year of any Honda with at least 200K miles on it 9. What colors can I get a camry in between 1999 - 2004 10. I want to see all 2001 Toyota 4 Runners with less than 100K miles, that are blue, and have AC 6. What 2002 cars cost less than $9,000? 8. I want the year of any Honda with at least 200K miles on it
Conclusion/Contributions • AskOntos • Is a free-form query system for the semantic web • Applies information extraction for query processing • Answers questions with extracted data values • Contributions • Web queries that use semantic annotations • Web queries returning answers from extracted data • Processing free-form queries using ontologies
Evaluating the Framework Input: • Obituaries ontology • 25 obituaries from two newspapers Four of eighteen object sets shown above. Data from Salt Lake Tribune and Arizona Daily Star
Scaling to the Web • Ontologies crawl and harvest web pages • Ontologies extract values from pages • Ontologies indexed (??) • Queries extracted by relevant ontologies • Rely on Google-like technology