I-Scover（あいすかばー、IEICE Knowledge Discovery）は、2013年4月3日より公開された電子情報通信学会の文献検索システムである。I-Scoverは、電子情報通信学会が著作権を保有する論文誌や研究会などの文献のメタデータをはじめ、日本電信電話株式会社 (NTT)や日本電気株式会社 (NEC)、沖電気工業株式会社 (OKI)などの各社が発行する企業誌のメタデータが登録されている。I-Scoverは、メタデータをLinked Open Data (LOD)の形式で蓄積しており、一般的な検索システムの機能に加え、OpenSearch APIやSPARQL API (SPARQL Endpoint)の各機能を提供している。平成30年3月29日をもって運用を停止している。

 概要 
I-Scoverは、キーワードや著者名、組織名などを検索フォームに入力して検索する一般的な検索システムの機能に加え、外部のアプリケーションからアクセス可能なOpenSearch APIとSPARQL API (SPARQL Endpoint)の2つのAPIを一般公開している。APIを利用することでI-Scoverの文献データベースに自由にアクセスでき、文献検索だけでなく研究動向や研究コミュニティなどの分析が可能となる。2017年9月1日現在、I-Scoverには24万件以上の文献をはじめ、27万人規模の著者、32万件規模の技術用語がLinked Open Data (LOD)の形式で登録されている。

I-Scoverの"I"はIEICEの"I"であるとともに、I（私）を意味しており、I-Scoverの発音がI discoverと聞こえることから名付けられたものである。

I-Scoverは、電子情報通信学会の登録商標である。

 文献検索 
I-Scoverは、文献のタイトルやキーワード、概要、発行日などのメタデータをLinked Dataとして蓄積しており、1語のキーワードによる直観的な検索や、個々のメタデータを指定した詳細検索の機能を提供している。I-Scoverは、CiNii ArticlesやIEEE Xploreなどの一般的な文献検索システムとは異なりメタデータが互いにリンクされているため、メタデータを辿ることで知識を横断するような文献検索が可能である。著者やキーワードなどのメタデータは、電子情報通信学会の事務局により名寄せが行われており、メタデータの質向上が図られている。

 Linked Data 
Linked Dataは、Resource Description Framework (RDF)に基づき主語、述語、目的語の3つ組（Triple）で個々のリソース（メタデータ）を意味的にリンクし、メタデータを体系的に整理したデータである。オープンデータとして公開されたLinked DataをLinked Open Data (LOD)という。I-Scoverは、Linked Dataを一般公開していないが、OpenSearch APIやSPARQL APIを通じて得られるデータに関してはオープンデータとして取り扱うことができ、メタデータの二次利用によるアプリケーション開発、及び公開が可能である。

I-Scoverは、各種メタデータをArticle（文献）、Term（技術用語）、Person（著者）、Organization（組織）、Publication（出版物）、Event（イベント）の6つのクラスに分類して管理している。また、この他にデータ数は僅かであるが、Multimedia（マルチメディア）とOnlineService（オンラインサービス）の2つのクラスを定義してメタデータを管理している。

+ I-Scoverが蓄積しているLinked Dataの代表的な述語構造クラス述語
(prefix:property)データ型出現回数
[Min, Max]内容Articledcterms:titlexsd:string[1, 2]タイトルfabio:hasSubtitlexsd:string[0, -]サブタイトルdcterms:abstractxsd:string[0, 2]概要文dcterms:subjectxsd:anyURI[0, -]キーワードiscover:authorInfos
　　rdf:Description

　　　　iscover:authorInfo

　　　　　　rdf:Description

　　　　　　　　iscover:author

　　　　　　　　iscover:affiliationxsd:anyURI[1, -]著者とその所属dcterms:languagedcterms:ISO639-2[0, 1]言語iscover:articleTypexsd:string[0, 2]文献の種類iscover:articleTypeDetailxsd:string[0, 2]文献の種類（詳細）iscover:peerReviewxsd:string[0, 2]査読の有無iscover:rightsHolderxsd:string[0, 2]著作権保持者iscover:licensexsd:string[0, -]ライセンスiscover:sectionxsd:anyURI[0, 1]特集名（会誌、論文誌）iscover:featureNamexsd:string[0, -]特集名（その他）iscover:relatedToEventxsd:anyURI[0, 1]イベントiscover:relatedToSessionxsd:anyURI[0, 1]セッションiscover:technicalFieldxsd:anyURI[0, 1]技術分野iscover:articleNumberxsd:string[0, 2]文献番号iscover:awardxsd:string[0, -]表彰prism:startingPagexsd:int[0, 1]開始ページ番号prism:endingPagexsd:int[0, 1]終了ページ番号dc:formatxsd:string[0, 2]フォーマットdcterms:issuedxsd:date[0, 1]発行日iscover:announceDatexsd:date[0, 1]発表日dcterms:isPartOfxsd:anyURI[0, 1]出版物iscover:publicationTypexsd:string[0, 2]出版物の種類dcterms:bibliographicCitiationxsd:anyURI[0, 1]本文の紹介ページdcterms:identifierxsd:anyURI[0, 1]本文prism:doixsd:string[0, 1]DOITermrdfs:labelxsd:string[1, -]技術用語skos:prefLabelxsd:string[1, -]技術用語xl:altLabelxsd:string[0, -]同義語skos:broaderxsd:anyURI[0, -]上位概念の用語skos:relatedxsd:anyURI[0, -]関連用語foaf:primaryTopicxsd:anyURI[0, 1]DBpediaリンクPersonfoaf:namexsd:string[1, 2]人名vcard:orgxsd:anyURI[0, -]所属Organizationrdfs:labelxsd:string[1, -]組織名foaf:namexsd:string[1, -]組織名Publicationdcterms:titlexsd:string[1, -]タイトルdcterms:isPartOfxsd:anyURI[0, 1]出版物iscover:rightsHolderxsd:string[0, 2]著作権保持者prism:numberxsd:string[0, 1]出版物番号prism:publicationDatexsd:date[0, 1]発行日prism:volumexsd:string[0, 1]巻号dc:publisherxsd:string[0, 2]発行者Eventdcterms:titlexsd:string[1, 2]タイトルdcterms:isPartOfxsd:anyURI[0, 1]イベント（マスター）ical:categoriesxsd:string[0, 2]カテゴリiscover:sessionNumberxsd:string[0, 1]セッション番号iscover:cityxsd:string[0, 2]開催都市iscover:venuexsd:string[0, 2]開催場所swrc:startDatexsd:date[0, 1]開始日swrc:endDatexsd:date[0, 1]終了日foaf:homepagexsd:anyURI[0, 1]ホームページMultimediadcterms:titlexsd:string[1, 2]タイトルdcterms:formatxsd:string[0, 2]フォーマットdcterms:descriptionxsd:string[0, 2]説明文dcterms:subjectxsd:anyURI[0, -]キーワードiscover:relatedDocumentUrixsd:anyURI[0, 1]関連文献iscover:relatedToOnlineServicexsd:anyURI[0, 1]オンラインサービス

 SPARQL 
SPARQLは、RDFクエリ言語の1つであり、Linked Dataのリソースを対象とした検索や分析が可能である。I-Scoverは、SPARQL APIを提供しており、文献メタデータを用いた高度な検索や分析を可能としている。

I-Scover SPARQL API: https://i-scover-api.ieice.org/iscover/api/sparql

 例1. 文献数を取得 
select
 count(*)
where {
 ?articleIRI
 a iscover:Article.
}

 例2. クラスとその使用回数を取得 
select
 ?object
 count(?object) as ?total
where {
 ?subject
 a ?object.
}
group by ?object
order by desc(?total)

 例3. 述語の一覧を取得 
select
 ?predicate
where {
 ?subject
 ?predicate ?object.
}
group by ?predicate
order by asc(?predicate)

 例4. 「センサネットワーク」と「消費電力」が概要文に含まれる最新の文献20件を取得 
select
 ?articleIRI
 ?title
where {
 ?articleIRI
 dcterms:title ?title;
 dcterms:abstract ?abstract;
 dcterms:issued ?date;
 a iscover:Article.
 
 filter(lang(?title) = "ja")
 filter(regex(?abstract, "センサネットワーク") = true
 && regex(?abstract, "消費電力") = true
 )
}
order by desc(?date)
limit 20

 例5. 文献の概要文から「センサネットワーク」の説明文を抽出 
select
 ?date
 ?description
where {
 values(?term) {
 ("センサネットワーク")
 }

 ?articleIRI
 dcterms:abstract ?abstract;
 dcterms:issued ?date;
 a iscover:Article.

 filter(regex(?abstract, concat(?term, "は.+る．")) = true)
 bind(replace(?abstract, strBefore(?abstract, concat(?term, "は")), "") as ?tmp)
 bind(replace(?tmp, strAfter(?tmp, "．"), "") as ?description)
 bind("本(稿|論文|報告|研究|システム|アルゴリズム)|我々|機構|説明|提案|検討" as ?reject)
 filter(regex(?description, ?reject) = false)
}
order by desc(?date)

 例6. 2012年から2016年において加熱した研究トピック（キーワード）を取得 
select
 ?keyword
 ?increasedRate
where {
 {
 select
 ?p1TermIRI
 count(?p1TermIRI) as ?p1Total
 where {
 ?articleIRI
 dcterms:subject ?p1TermIRI;
 dcterms:issued ?date;
 a iscover:Article.

 bind(year(?date) as ?year)
 filter(?year = 2012)
 }
 }

 {
 select
 ?p2TermIRI
 count(?p2TermIRI) as ?p2Total
 where {
 ?articleIRI
 dcterms:subject ?p2TermIRI;
 dcterms:issued ?date;
 a iscover:Article.

 bind(year(?date) as ?year)
 filter(?year = 2016)
 }
 }

 filter(?p1TermIRI = ?p2TermIRI)
 filter(?p1Total >= 3 && ?p2Total >= 3)
 bind((xsd:float(?p2Total) / ?p1Total) as ?increasedRate)

 ?p1TermIRI
 rdfs:label ?keyword;
 a iscover:Term.

 filter(lang(?keyword) = "ja")
 filter(?increasedRate >= 5.0)
}
order by desc(?increasedRate)

 例7. 「IoT」と「ディープラーニング」の文献数推移を取得 
select
 ?keyword
 ?year
 count(?articleIRI) as ?total
where {
 {
 select
 ?termIRI
 ?keyword
 where {
 values( ?keyword ) {
 ("IoT"@ja) ("ディープラーニング"@ja)
 }

 ?termIRI
 rdfs:label ?keyword;
 a iscover:Term.
 }
 }

 ?articleIRI
 dcterms:subject ?termIRI;
 dcterms:issued ?date;
 a iscover:Article.

 bind(year(?date) as ?year)
}
order by asc(?keyword) asc(?year)

 例8. 2014年における主要な研究トピック（キーワード）Top-100を取得 
select
 ?term
 ?total
where {
 {
 select
 ?termIRI
 count(?termIRI) as ?total
 where {
 ?articleIRI
 dcterms:subject ?termIRI;
 dcterms:issued ?date;
 a iscover:Article.
 
 bind(year(?date) as ?year)
 filter(?year = 2014)
 }
 group by ?termIRI
 order by desc(?total)
 limit 100
 }
 
 
 optional {
 ?termIRI
 rdfs:label ?term;
 a iscover:Term.

 filter(lang(?term) = "ja")
 }
 optional {
 ?termIRI
 rdfs:label ?term;
 a iscover:Term.
 
 filter(lang(?term) = "en")
 }
}
order by desc(?total)

 例9. 技術用語の共起頻度に基づいた日英・英日辞書 
select
 ?term
 if(?total > 5, ?transTerm, "(Insufficient data)") as ?transTerm
where {
 {
 select
 ?term
 ?lang
 ?coTermIRI
 count(?coTermIRI) as ?total
 where {
 values(?term) { ("自然言語処理"@ja) }
 
 ?termIRI
 rdfs:label ?term;
 a iscover:Term.
 
 bind(lang(?term) as ?lang)

 ?articleIRI
 dcterms:subject ?termIRI;
 a iscover:Article.

 ?articleIRI
 dcterms:subject ?coTermIRI;
 a iscover:Article.
 }
 order by desc(?total)
 limit 5
 }
 
 
 ?coTermIRI
 rdfs:label ?transTerm;
 a iscover:Term.
 
 
 bind(if(?lang = "ja", "en", "ja") as ?target)
 filter(lang(?transTerm) = ?target)
}
order by desc(?total)
limit 1

 例10. データマイニングの共起語を基準とした技術年表 
select
 ?coTerm
 min(?year) as ?startYear
 max(?year) as ?endYear
where {
 {
 select
 ?coTermIRI
 count(?coTermIRI) as ?total
 where {
 values(?term) { ("データマイニング"@ja) }
 
 
 ?termIRI
 rdfs:label ?term;
 a iscover:Term.
 
 
 ?articleIRI
 dcterms:subject ?termIRI;
 a iscover:Article.
 
 
 ?articleIRI
 dcterms:subject ?coTermIRI;
 dcterms:issued ?date;
 a iscover:Article.
 }
 order by desc(?total)
 limit 20
 }
 
 
 ?coTermIRI
 rdfs:label ?coTerm;
 a iscover:Term.
 
 filter(lang(?coTerm) = "ja")
 
 
 ?articleIRI
 dcterms:subject ?coTermIRI;
 dcterms:issued ?date;
 a iscover:Article.
 
 bind(year(?date) as ?year)
}
order by asc(?startYear)

 例11. 任意のキーワードを起点とした共起語グラフ 
select
 ?source
 ?target
 ?weight
where {
 {
 select
 ?source
 ?targetIRI
 count(?targetIRI) as ?weight
 where {
 values ?source {
 "ニューラルネットワーク"@ja
 "機械学習"@ja
 "画像処理"@ja
 }
 
 
 ?termIRI
 rdfs:label ?source;
 a iscover:Term.
 
 
 ?articleIRI
 dcterms:subject ?termIRI;
 a iscover:Article.
 
 
 ?articleIRI
 dcterms:subject ?targetIRI;
 a iscover:Article.
 }
 }
 
 filter(?weight >= 5)
 
 
 ?targetIRI
 rdfs:label ?target;
 a iscover:Term.

 filter(lang(?target) = "ja")
 filter(?source != ?target)
}
order by asc(?source) desc(?weight)

 例12. 任意の組織名を起点とした組織グラフ 

select
 ?source
 ?target
 ?weight
where {
 {
 select
 ?source
 ?abbraviation
 ?targetIRI
 count(?organizationIRI) as ?weight
 where {
 values (?candidate ?abbraviation) {
 ("日本電信電話"@ja "NTT"@ja)
 ("日本電気"@ja "NEC"@ja)
 ("沖電気工業"@ja "OKI"@ja)
 }
 
 
 ?organizationIRI
 rdfs:label ?source;
 a iscover:Organization.
 
 filter(lang(?source) = "ja")
 filter(regex(?source, ?candidate) = true
 || regex(?source, ?abbraviation) = true)
 
 
 ?articleIRI
 iscover:authorInfos/rdf:rest*/rdf:first/iscover:authorInfo [
 iscover:affiliation ?organizationIRI;
 ];
 dcterms:issued ?date;
 a iscover:Article.
 
 filter(2010 <= year(?date))
 
 
 ?articleIRI
 iscover:authorInfos/rdf:rest*/rdf:first/iscover:authorInfo [
 iscover:affiliation ?targetIRI;
 ];
 a iscover:Article.
 }
 order by desc(?weight)
 }
 
 filter(?weight >= 10)
 
 
 ?targetIRI
 rdfs:label ?target;
 a iscover:Organization.
 
 filter(lang(?target) = "ja")
 filter(?source != ?target && ?abbraviation != ?target)
}
order by asc(?source) desc(?weight)

 例13. 任意の組織における研究開発の経歴 
select
 ?term
 ?startYear
 ?endYear
 ?duration
 ?total
where {
 {
 select
 ?termIRI
 min(?year) as ?startYear
 max(?year) as ?endYear
 count(?termIRI) as ?total
 where {
 ?organizationIRI
 rdfs:label "沖電気工業　株式会社"@ja;
 a iscover:Organization.

 
 ?articleIRI
 iscover:authorInfos/rdf:rest*/rdf:first/iscover:authorInfo [
 iscover:affiliation ?organizationIRI;
 ];
 dcterms:subject ?termIRI;
 dcterms:issued ?date;
 a iscover:Article.

 bind(year(?date) as ?year)
 }
 }

 bind((?endYear - ?startYear + 1) as ?duration)

 ?termIRI
 rdfs:label ?term;
 a iscover:Term.
 filter(lang(?term) = "ja")
}
order by desc(?total) desc(?duration)