1+1>2: Programming Know-What and Know-How Knowledge Fusion, Semantic Enrichment and Coherent Application
Qing Huang, Zhiqiang Yuan, Zhenchang Xing, Zhengkang Zuo, Changjing, Wang, Xin Xia

TL;DR
This paper proposes a novel fusion of API and task knowledge graphs to enhance software knowledge accessibility, enabling more coherent API and task-centric searches through semantic enrichment.
Contribution
It introduces the first method to fuse API-KG and Task-KG via API entity linking, creating new semantic relations and enriching existing knowledge graphs for better search capabilities.
Findings
Only 36% of API usage questions can be answered by individual knowledge graphs.
Nine categories of API semantic relations are created through fusion.
The enriched knowledge graph improves API/Task-centric knowledge search.
Abstract
Software programming requires both API reference (know-what) knowledge and programming task (know-how) knowledge. Lots of programming know-what and know-how knowledge is documented in text, for example, API reference documentation and programming tutorials. To improve knowledge accessibility and usage, several recent studies use Natural Language Processing (NLP) methods to construct API know-what knowledge graph (API-KG) and programming task know-how knowledge graph (Task-KG) from software documentation. Although being promising, current API-KG and Task-KG are independent of each other, and thus are void of inherent connections between the two types of knowledge. Our empirical study on Stack Overflow questions confirms that only 36% of the API usage problems can be answered by the know-how or the know-what knowledge alone, while the rest questions require a fusion of both. Inspired by…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Engineering Techniques and Practices · Software System Performance and Reliability
